Class: JobWorkflow::Logger::JsonFormatter
- Inherits:
-
Logger::Formatter
- Object
- Logger::Formatter
- JobWorkflow::Logger::JsonFormatter
- Includes:
- ActiveSupport::TaggedLogging::Formatter
- Defined in:
- lib/job_workflow/logger.rb,
sig/generated/job_workflow/logger.rbs
Overview
JSON formatter for structured logging output.
Instance Attribute Summary collapse
- #log_tags ⇒ Array[Symbol] readonly
Instance Method Summary collapse
-
#build_base_hash(severity, time, progname) ⇒ Hash[Symbol, untyped]
: (String, Time, String) -> Hash[Symbol, untyped].
-
#build_msg_hash(msg) ⇒ Hash[Symbol, untyped]
: (String | Hash[untyped, untyped]) -> Hash[Symbol, untyped].
-
#build_tags_hash ⇒ Hash[Symbol, untyped]
: () -> Hash[Symbol, untyped].
-
#call(severity, time, progname, msg) ⇒ String
: (String, Time, String, String | Hash[untyped, untyped]) -> String.
-
#initialize(log_tags: []) ⇒ JsonFormatter
constructor
: (?log_tags: Array) -> void.
-
#parse_json_or_message(msg) ⇒ Hash[Symbol, untyped]
: (String) -> Hash[Symbol, untyped].
Constructor Details
#initialize(log_tags: []) ⇒ JsonFormatter
: (?log_tags: Array) -> void
39 40 41 42 |
# File 'lib/job_workflow/logger.rb', line 39 def initialize(log_tags: []) @log_tags = super() end |
Instance Attribute Details
#log_tags ⇒ Array[Symbol] (readonly)
54 55 56 |
# File 'lib/job_workflow/logger.rb', line 54 def @log_tags end |
Instance Method Details
#build_base_hash(severity, time, progname) ⇒ Hash[Symbol, untyped]
: (String, Time, String) -> Hash[Symbol, untyped]
57 58 59 60 |
# File 'lib/job_workflow/logger.rb', line 57 def build_base_hash(severity, time, progname) time_in_zone = time.in_time_zone(Time.zone || "UTC") { time: time_in_zone.iso8601(6), level: severity, progname: progname } end |
#build_msg_hash(msg) ⇒ Hash[Symbol, untyped]
: (String | Hash[untyped, untyped]) -> Hash[Symbol, untyped]
68 69 70 71 72 73 74 75 |
# File 'lib/job_workflow/logger.rb', line 68 def build_msg_hash(msg) case msg when Hash msg.symbolize_keys else (msg.to_s) end end |
#build_tags_hash ⇒ Hash[Symbol, untyped]
: () -> Hash[Symbol, untyped]
63 64 65 |
# File 'lib/job_workflow/logger.rb', line 63 def .zip().to_h end |
#call(severity, time, progname, msg) ⇒ String
: (String, Time, String, String | Hash[untyped, untyped]) -> String
45 46 47 48 49 50 |
# File 'lib/job_workflow/logger.rb', line 45 def call(severity, time, progname, msg) base_hash = build_base_hash(severity, time, progname) = msg_hash = build_msg_hash(msg) "#{JSON.generate({ **base_hash, **, **msg_hash })}\n" end |
#parse_json_or_message(msg) ⇒ Hash[Symbol, untyped]
: (String) -> Hash[Symbol, untyped]
78 79 80 81 82 |
# File 'lib/job_workflow/logger.rb', line 78 def (msg) JSON.parse(msg, symbolize_names: true) rescue JSON::ParserError { message: msg } end |