-
Notifications
You must be signed in to change notification settings - Fork 21
101 formatting log messages
In order to format the log message you have a variety of possibilities. Yell provides
placeholders to enrich your message with additional information. When passing
the :format
option, the following placeholders are recognized:
%m
: The message to be logged
%d
: The ISO8601 Timestamp
%L
: The log level, e.g INFO
, WARN
%l
: The log level (short), e.g. I
, W
%p
: The PID of the process from where the log event occured
%t
: The Thread ID from where the log event occured
%h
: The hostname of the machine from where the log event occured
%f
: The filename from where the log event occured
%n
: The line number of the file from where the log event occured
%F
: The filename with path from where the log event occured
%M
: The method where the log event occured
You can combine those placeholders as you like and the following examples should give you a better understanding.
There are some already defined formats available to use:
The default formatting string looks like: %d [%5L] %p : %m
and is used when nothing else is defined.
logger = Yell.new STDOUT, :format => Yell::DefaultFormat
logger.info "Hello World!"
#=> "2012-02-29T09:30:00+01:00 [ INFO] 65784 : Hello World!"
# ^ ^ ^ ^
# ISO8601 Timestamp Level Pid Message
The basic formating string looks like: %l, %d: %m
logger = Yell.new STDOUT, :format => Yell::BasicFormat
logger.info "Hello World!"
#=> "I, 2012-02-29T09:30:00+01:00 : Hello World!"
# ^ ^ ^
# ^ ISO8601 Timestamp Message
# Level (short)
The extended formatting string looks like: %d [%5L] %p %h : %m
logger = Yell.new STDOUT, :format => Yell::ExtendedFormat
logger.info "Hello World!"
#=> "2012-02-29T09:30:00+01:00 [ INFO] 65784 localhost : Hello World!"
# ^ ^ ^ ^ ^
# ISO8601 Timestamp Level Pid Hostname Message
logger = Yell.new STDOUT, :format => false
logger.info "Hello World!"
#=> "Hello World!"
Alternatively, you may use Yell::NoFormat
logger = Yell.new STDOUT, :format => Yell::NoFormat
logger.info "Hello World!"
#=> "Hello World!"
logger = Yell.new STDOUT, :format => "%m @ %d"
logger.info "Hello World!"
#=> "Hello World! @ 2012-02-29T09:30:00+01:00"
Note: File based placeholders (%f
, %n
, %F
, %M
) will be empty unless the desired levels are set using the trace
option.
# trace not set
logger = Yell.new STDOUT, :format => "%F:%n %m", :level => [:debug, :info, :warn, :error, :fatal]
logger.info "Hello World!"
#=> ": Hello World!"
# trace set
levels = [:debug, :info, :warn, :error, :fatal]
logger = Yell.new STDOUT, :format => "%F:%n %m", :trace => levels, :level => levels
logger.info "Hello World!"
#=> "/path/to/file.rb:3 Hello World!"
logger = Yell.new STDOUT, :format => Yell.format( "%d: %m", "%H:%M:%S" )
logger.info "Hello World!"
#=> "09:30:00 : Hello World!"
# ^ ^
# ^ Message
# Custom time format (Hours:Minutes:Seconds)