|
PatternFormatterWith PatternFormatter, you get complete control over the appearance of Log4r log events without having to write custom Formatter classes. In order to take advantage of PatternFormatter, some familarity with Kernel#sprintf and Time.strftime is recommended. PatternFormatter accepts three hash arguments:
The pattern format string is something like "%l [%d] %80M", which resembles a pattern one would normally pass to Kernel#sprintf. However, the directives are specific to Log4r. Before we go on, let's cover some terminology. Terminology
What the Directive Letters mean
Examples of directives:
Pattern StringPut a bunch of directives together with some choice formatting characters and you get a pattern string. For instance: "[%l] %d :: %.15m" => [DEBUG] 2001-01-12 13:15:50 :: This is a messa To create a PatternFormatter with this format: p = PatternFormatter.new :pattern => "[%l] %d :: %.15m" Formatting timeTo format time, you can do one of the following:
If neither date_pattern nor date_method is specified, the default date format will be used. Currently, that would be ISO8601, The date_pattern is exactly what one would pass to Time.strftime. Please read up on that for details. To specify a date_pattern, pass :date_pattern=>"pattern" to PatternFormat.new. Alternatively, date_method is something like usec or to_s or any other zero argument Time method that produces a time. More precisely, the method to call will be invoked on Time.now. To specify a date_method, pass :date_method=>'methodname' (or a Symbol equivalent) to PatternFormatter.new. XML ConfigurationAs explained in log4r/configurator.rb, the hash arguments to PatternFormatter are XML parameters. Here's an example: <formatter type="PatternFormatter" pattern="[%l] %d :: %.15m"> <date_method>usec</date_method> </formatter> Performace considerationsThe performance impact of using a particular directive letter is noted in the What the Directives Letters mean section. The performance impact of time formatting merits special attention. If you aren't aware yet, the Time class is kind of a kludge. Time.now.usec happens to be faster than Time.now. If you're concerned about performance, please profile the various time methods and patterns. Other Info
Module Log4r ::Class Log4r::BasicFormatter ::Class Log4r::ConfigError ::Class Log4r::Configurator ::Class Log4r::DefaultFormatter ::Class Log4r::EmailOutputter ::Class Log4r::FileOutputter ::Class Log4r::Formatter ::Class Log4r::IOOutputter ::Class Log4r::Log4rTools ::Class Log4r::LogEvent ::Class Log4r::LogServer ::Class Log4r::Logger ::Class Log4r::ObjectFormatter ::Class Log4r::Outputter ::Class Log4r::PatternFormatter ::Class Log4r::RemoteOutputter ::Class Log4r::RollingFileOutputter ::Class Log4r::RootLogger ::Class Log4r::SimpleFormatter ::Class Log4r::StderrOutputter ::Class Log4r::StdoutOutputter |