-
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 MessageThe 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 Messagelogger = 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)