module NRSER::Log::Formatters::Mixin
A mix-in to include in {SemanticLogger::Formatter::Default} and subclasses to improve configurability.
Public Instance Methods
Get or set the body section tokens.
Just like {#header}, which has details and examples, but for the “body” section of log messages (message, payload, exception).
@see header
@param [Array<Symbol>] tokens
When not empty, sets the body to those tokens in that order. When empty, the current body is returned.
@return [BodyTokens]
The new and/or current body.
# File lib/nrser/log/formatters/mixin.rb, line 213 def body *tokens if tokens.empty? @body ||= BodyTokens.new else @body = BodyTokens.new tokens end end
Set the body section format tokens.
See {#header} for details and examples of how the header works.
@see header
@param [Array<Symbol>] tokens
Token symbols to set as the body format.
@return [HeaderTokens]
The new body format.
# File lib/nrser/log/formatters/mixin.rb, line 234 def body= tokens @body = BodyTokens.new tokens end
Get or set the header “tokens” - {SemanticLogger::Formatters::Default} method names in the order their responses should be joined to form the header section of formatted log messages (time, level, name, etc.).
@example Getting the {HeaderTokens}
# You won't see much unless logging is setup NRSER::Log.setup! dest: $stdout, level: :info # Full object path to HeaderTokens - there's also a {NRSER::Log.header} # shortcut NRSER::Log.appender.formatter.header # => [:time, :level, :process_info, :tags, :named_tags, :duration, :name] NRSER.logger.info "Hey yo!" # > 2018-04-12 23:43:24.982040 INFO [19301:main] NRSER # > -- Hey yo! # > # => true
@example Setting the {HeaderTokens}
# You won't see much unless logging is setup NRSER::Log.setup! dest: $stdout, level: :info # Set a very simple header NRSER::Log.header :level, :name # => [:level, :name] # And notice the reduced log header NRSER.logger.info "Hey yo!" # > INFO NRSER # > -- Hey yo! # > # => true
@param [Array<Symbol>] tokens
Optional list of token symbols to set as the header format. When empty, the method works as a getter, returning the current header format tokens.
@return [HeaderTokens]
The current header tokens.
# File lib/nrser/log/formatters/mixin.rb, line 172 def header *tokens if tokens.empty? @header ||= HeaderTokens.new else @header = HeaderTokens.new tokens end end
Set the header section format tokens.
See {#header} for details and examples of how the header works.
@see header
@param [Array<Symbol>] tokens
Token symbols to set as the header format.
@return [HeaderTokens]
The new header format.
# File lib/nrser/log/formatters/mixin.rb, line 193 def header= tokens @header = HeaderTokens.new tokens end
Protected Instance Methods
Use {#body} to render the header string for the current log.
@return [String]
# File lib/nrser/log/formatters/mixin.rb, line 255 def render_body body.map( &method( :send ) ).compact.join ' ' end
Use {#header} to render the header string for the current log.
@return [String]
# File lib/nrser/log/formatters/mixin.rb, line 246 def render_header header.map( &method( :send ) ).compact.join ' ' end
Render the current log message using {#render_header} and {#render_body}.
@return [String]
# File lib/nrser/log/formatters/mixin.rb, line 264 def render_log render_header + "\n" + render_body + "\n" end