Module: Appydays::Loggable
- Included in:
- RequestLogger, SidekiqJobLogger
- Defined in:
- lib/appydays/loggable.rb
Overview
Helpers for working with structured logging. Use this instead of calling semantic_logger directly. Generally you ‘include Appydays::Loggable`
Defined Under Namespace
Modules: Methods
Class Method Summary collapse
-
.[](key) ⇒ Object
Return the logger for a key/object.
-
.configure_12factor(format: nil, application: nil) ⇒ Object
Configure logging for 12 factor applications.
- .default_level=(v) ⇒ Object
- .ensure_stderr_appender ⇒ Object
- .included(target) ⇒ Object
- .set_default_level(v, warning: true) ⇒ Object
- .with_log_tags(tags) ⇒ Object
Class Method Details
.[](key) ⇒ Object
Return the logger for a key/object.
127 128 129 130 131 |
# File 'lib/appydays/loggable.rb', line 127 def self.[](key) return key.logger if key.respond_to?(:logger) (key = key.class) unless [Module, Class].include?(key.class) return SemanticLogger[key] end |
.configure_12factor(format: nil, application: nil) ⇒ Object
Configure logging for 12 factor applications. Specifically, that means setting STDOUT to synchronous, using STDOUT as the log output, and also conveniently using color formatting if using a tty or json otherwise (ie, you want to use json logging on a server).
139 140 141 142 143 144 |
# File 'lib/appydays/loggable.rb', line 139 def self.configure_12factor(format: nil, application: nil) format ||= $stdout.isatty ? :color : :json $stdout.sync = true SemanticLogger.application = application if application SemanticLogger.add_appender(io: $stdout, formatter: format.to_sym) end |
.default_level=(v) ⇒ Object
115 116 117 |
# File 'lib/appydays/loggable.rb', line 115 def self.default_level=(v) self.set_default_level(v) end |
.ensure_stderr_appender ⇒ Object
161 162 163 164 165 |
# File 'lib/appydays/loggable.rb', line 161 def self.ensure_stderr_appender return if @stderr_appended SemanticLogger.add_appender(io: $stderr) @stderr_appended = true end |
.included(target) ⇒ Object
108 109 110 111 112 113 |
# File 'lib/appydays/loggable.rb', line 108 def self.included(target) target.include(SemanticLogger::Loggable) target.extend(Methods) target.include(Methods) end |
.set_default_level(v, warning: true) ⇒ Object
119 120 121 122 123 |
# File 'lib/appydays/loggable.rb', line 119 def self.set_default_level(v, warning: true) return if v == SemanticLogger.default_level self[self].warn "Overriding log level to %p" % v if warning SemanticLogger.default_level = v end |
.with_log_tags(tags) ⇒ Object
146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/appydays/loggable.rb', line 146 def self.() if defined?(Sentry) Sentry.configure_scope do |scope| scope.set_extras() end end blockresult = nil SemanticLogger.named_tagged() do blockresult = yield end return blockresult end |