ABOUT
The ‘buffered_logger’ gem is an extension to ActiveSupport::BufferedLogger which gives the the little logger some much needed formatting support. The actual logging work is still delegated to to active_support/buffered_logger.
FEATURES
-
per thread indentation
-
per thread auto flush setting
-
temporary indentation blocks
-
per severity formatting
-
ansi color output formats
USAGE
# default initialization l = BufferedLogger.new(STDOUT)
# changing the severity level l.level = :warn l.level = 1
# formatter constructor (initializes the master thread’s formatters) l = BufferedLogger.new(STDOUT, :debug,
{ :info => "$green INFO: $white %s",
:warn => "$yellow WARNING: $white %s",
:error => "$red ERROR: $white %s" } )
# setting formatting after initialization l.info_formatter = “$green INFO: $white %s”,
l.warn_formatter = “$yellow WARNING: $white %s” l.error_formatter = “$red ERROR: $white %s”
# checking the current thread’s formatting l.info_formatter.to_s l.warn_formatter.to_s …
# checking the current thread’s indentation l.padding.to_s
# setting the current thread’s indentation l.indent(4) # move cursor right 4 spaces l.indent(-2) # move cursor left 2 spaces l.indent(:reset) # reset indentation
# temporarily indenting using an indent block l.indent do
l.info 'some info'
...
l.info 'some more info'
end
# setting auto_flushing l.auto_flushing = 2
USAGE DETAILS
-
Severity Levels
-
severity level is optional and defaults to :debug
-
severity level can be provided as an Integer or Symbol
0 - DEBUG 1 - INFO 2 - WARN 3 - ERROR 4 - FATAL 5 - UNKNOWN
-
-
ActiveSupport::BufferedLogger
-
native buffered_logger functionality is preserved $ ActiveSupport::BufferedLogger.public_instance_methods(false)
=> ["add", "info", "fatal?", "auto_flushing", "fatal", "silencer", "debug", "info?", "warn?", "auto_flushing=", "silencer=", "level", "error?", "unknown", "debug?", "flush", "level=", "open_log", "warn", "unknown?", "silence", "error", "close"]
-
-
ANSI Color
-
colors are only supported when logging to STDOUT
-
any ansi method may be used in a format string following a ‘$’ symbol $ Term::ANSIColor.instance_methods
=> ["black", "on_yellow", "underscore", "rapid_blink", "white", "bold", "yellow", "on_cyan", "strikethrough", "on_green", "uncolored", "blink", "cyan", "reset", "green", "on_magenta", "clear", "concealed", "on_red", "dark", "underline", "magenta", "red", "on_blue", "negative", "on_black", "italic", "blue", "on_white"]
-
-
Indentation
-
the padding is calculated on a per thread basis and each thread has an indentation counter which is shared across all severity levels
-
-
Formatting
-
formatters are set on a per thread/per severity basis, meaning that every severity level for every thread allows for a custom formatter
-
the formatter search order is as follows
1. current thread's formatter for specified severity 2. master thread's formatter for specified severity 3. master thread's default formatter
-
-
Thread Buffering
-
the auto_flushing setting is set per thread and each thread defaults to the autoflush setting of the master thread unless explicitly configured
-