Class: Familia::LogFormatter
- Inherits:
-
Logger::Formatter
- Object
- Logger::Formatter
- Familia::LogFormatter
- Defined in:
- lib/familia/logging.rb
Overview
When used with FamiliaLogger, checks Fiber[:familia_trace_mode] to distinguish TRACE from DEBUG. When used with standard Logger, treats level 0 as TRACE since DEBUG and TRACE share the same numeric level.
Custom formatter for Familia logger output.
LogFormatter produces structured log output with severity letters, timestamps, process/thread/fiber IDs, and the log message.
Output format: SEVERITY, MM-DD HH:MM:SS.mmm pid:PID [THREAD_ID/FIBER_ID]: MESSAGE
Severity letters: T = TRACE (when Fiber[:familia_trace_mode] is set, or level 0 when not using FamiliaLogger) D = DEBUG I = INFO W = WARN E = ERROR F = FATAL U = UNKNOWN
Constant Summary collapse
- SEVERITY_LETTERS =
Severity string to letter mapping.
Maps severity string labels to single-letter codes for compact output. Note: TRACE is handled via Fiber check in #call for FamiliaLogger.
{ 'DEBUG' => 'D', 'INFO' => 'I', 'WARN' => 'W', 'ERROR' => 'E', 'FATAL' => 'F', 'UNKNOWN' => 'U', 'ANY' => 'T', # ANY is Logger's label for severity < 0, treat as TRACE }.freeze
Instance Method Summary collapse
-
#call(severity, datetime, _progname, msg) ⇒ String
Format a log message with severity, timestamp, and context.
Instance Method Details
#call(severity, datetime, _progname, msg) ⇒ String
Format a log message with severity, timestamp, and context.
138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/familia/logging.rb', line 138 def call(severity, datetime, _progname, msg) # Check if we're in trace mode (TRACE uses same level as DEBUG but marks itself) # FamiliaLogger sets Fiber[:familia_trace_mode] when trace() is called severity_letter = if Fiber[:familia_trace_mode] 'T' else SEVERITY_LETTERS.fetch(severity, severity[0]) end utc_datetime = datetime.utc.strftime('%H:%M:%S.%3N') "#{severity_letter}, #{utc_datetime} #{msg}\n" end |