diff options
author | Michael Koziarski <michael@koziarski.com> | 2007-02-25 00:07:54 +0000 |
---|---|---|
committer | Michael Koziarski <michael@koziarski.com> | 2007-02-25 00:07:54 +0000 |
commit | c9770d8a5ac1c477943ba431396e5d7e6b7389b0 (patch) | |
tree | 5175761088d89a021dea8da2c1a405215afca444 /activesupport/lib | |
parent | ad9bacb189e82816bf333cdbae329f199a171c9f (diff) | |
download | rails-c9770d8a5ac1c477943ba431396e5d7e6b7389b0.tar.gz rails-c9770d8a5ac1c477943ba431396e5d7e6b7389b0.tar.bz2 rails-c9770d8a5ac1c477943ba431396e5d7e6b7389b0.zip |
Allow users to provide custom formatters to Logger. [aeden] Closes #7106, #2484
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6225 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activesupport/lib')
-rw-r--r-- | activesupport/lib/active_support/clean_logger.rb | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/activesupport/lib/active_support/clean_logger.rb b/activesupport/lib/active_support/clean_logger.rb index 376896cb3c..65ab50e66b 100644 --- a/activesupport/lib/active_support/clean_logger.rb +++ b/activesupport/lib/active_support/clean_logger.rb @@ -1,10 +1,21 @@ require 'logger' require File.dirname(__FILE__) + '/core_ext/class/attribute_accessors' -class Logger #:nodoc: +# Extensions to the built in Ruby logger. +# +# If you want to use the default log formatter as defined in the Ruby core, then you +# will need to set the formatter for the logger as in: +# +# logger.formatter = Formatter.new +# +# You can then specify the datetime format, for example: +# +# logger.datetime_format = "%Y-%m-%d" +class Logger + # Set to false to disable the silencer cattr_accessor :silencer self.silencer = true - + # Silences the logger for the duration of the block. def silence(temporary_level = Logger::ERROR) if silencer @@ -18,6 +29,35 @@ class Logger #:nodoc: yield self end end + + alias :old_datetime_format= :datetime_format= + # Logging date-time format (string passed to +strftime+). Ignored if the formatter + # does not respond to datetime_format=. + def datetime_format=(datetime_format) + formatter.datetime_format = datetime_format if formatter.respond_to?(:datetime_format=) + end + + alias :old_datetime_format :datetime_format + # Get the logging datetime format. Returns nil if the formatter does not support + # datetime formatting. + def datetime_format + formatter.datetime_format if formatter.respond_to?(:datetime_format) + end + + alias :old_formatter :formatter + # Get the current formatter. The default formatter is a SimpleFormatter which only + # displays the log message + def formatter + @formatter ||= SimpleFormatter.new + end + + # Simple formatter which only displays the message. + class SimpleFormatter < Logger::Formatter + # This method is invoked when a log event occurs + def call(severity, timestamp, progname, msg) + "#{msg}\n" + end + end private alias old_format_message format_message @@ -28,11 +68,11 @@ class Logger #:nodoc: # with Logger from 1.8.3 and vice versa. if method_defined?(:formatter=) def format_message(severity, timestamp, progname, msg) - "#{msg}\n" + formatter.call(severity, timestamp, progname, msg) end else def format_message(severity, timestamp, msg, progname) - "#{msg}\n" + formatter.call(severity, timestamp, progname, msg) end end end |