initial commit
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
module Dunlop::Loggable
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
has_many :log_entries, as: :loggable, dependent: :destroy, class_name: 'Dunlop::LogEntry'
|
||||
end
|
||||
|
||||
def with_nested_logger_and_catch_failed(scope=nil, options={})
|
||||
scope ||= caller[0][/`.*'/][1..-2]
|
||||
options[:exception_notifier] = true unless options.has_key?(:exception_notifier)
|
||||
backtrace = nil
|
||||
Dunlop::NestedLogger.scope('empty sandbox', benchmark: false) do
|
||||
result = Dunlop::NestedLogger.scope(scope, options) do
|
||||
begin
|
||||
yield
|
||||
rescue => e
|
||||
failed!
|
||||
ExceptionNotifier.notify_exception(e) if options[:exception_notifier]
|
||||
backtrace = Dunlop::LogEntry.exception_to_backtrace(e)
|
||||
Dunlop::NestedLogger.error(e.message)
|
||||
end
|
||||
end
|
||||
log_yaml = Dunlop::NestedLogger.flush_as_yaml
|
||||
log_entries.create(body: log_yaml, backtrace: backtrace) if log_yaml.present?
|
||||
result # return block result
|
||||
end
|
||||
end
|
||||
|
||||
def with_nested_logger(scope=nil, options={})
|
||||
scope ||= caller[0][/`.*'/][1..-2]
|
||||
e = nil
|
||||
backtrace = nil
|
||||
Dunlop::NestedLogger.scope('empty sandbox', benchmark: false) do
|
||||
Dunlop::NestedLogger.scope(scope, options) do
|
||||
begin
|
||||
yield
|
||||
rescue => e
|
||||
backtrace = Dunlop::LogEntry.exception_to_backtrace(e)
|
||||
Dunlop::NestedLogger.error(e.message)
|
||||
end
|
||||
end
|
||||
log_yaml = Dunlop::NestedLogger.flush_as_yaml
|
||||
log_entries.create(body: log_yaml, backtrace: backtrace) if log_yaml.present?
|
||||
end
|
||||
raise e if e
|
||||
end
|
||||
|
||||
def logger
|
||||
Dunlop::NestedLogger
|
||||
end
|
||||
|
||||
def log_state_transition
|
||||
log_entries.create(body: "transition to #{state}")
|
||||
end
|
||||
|
||||
def log_entry
|
||||
Dunlop::LogEntryCreator.new(self)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user