Help-Site Computer Manuals
Software
Hardware
Programming
Networking
  Algorithms & Data Structures   Programming Languages   Revision Control
  Protocols
  Cameras   Computers   Displays   Keyboards & Mice   Motherboards   Networking   Printers & Scanners   Storage
  Windows   Linux & Unix   Mac

Jifty::Logger -- A master class for Jifty's logging framwork

Jifty::Logger -- A master class for Jifty's logging framwork


NAME

Jifty::Logger -- A master class for Jifty's logging framwork


DESCRIPTION

Jifty uses the Log4perl module to log error messages. In Jifty programs there's two ways you can get something logged:

Firstly, Jifty::Logger captures all standard warnings that Perl emmits. So in addtion to everying output from perl via the warnings pragmas, you can also log messages like so:


    warn("The WHAM is overheating!");

This doesn't give you much control however. The second way allows you to specify the level that you want logging to occur at:


    Jifty->log->debug("Checking the WHAM");

    Jifty->log->info("Potential WHAM problem detected");

    Jifty->log->warn("The WHAM is overheating");

    Jifty->log->error("PANIC!");

    Jifty->log->fatal("Someone call Eddie Murphy!");

Configuring Log4perl

Unless you specify otherwise in the configuration file, Jifty will supply a default Log4perl configuration.

The default log configuration that logs all messages to the screen (i.e. to STDERR, be that directly to the terminal or to fastcgi's log file.) It will log all messages of equal or higher priority to he LogLevel configuration option.


    --- 

    framework: 

      LogLevel: DEBUG

You can tell Jifty to use an entirely different Logging configuration by specifying the filename of a standard Log4perl config file in the LogConfig config option (see the Log::Log4perl manpage for the format of this config file.)


    --- 

    framework: 

      LogConfig: etc/log4perl.conf

Note that specifying your own config file prevents the LogLevel config option from having any effect.

You can tell Log4perl to check that file perodically for changes. This costs you a little in application performance, but allows you to change the logging level of a running application. You need to set LogReload to the frequency, in seconds, that the file should be checked.


    --- 

    framework: 

      LogConfig: etc/log4perl.conf

      LogReload: 10

(This is implemented with Log4perl's init_and_watch functionality)


METHODS

new COMPONENT

This class method instantiates a new Jifty::Logger object. This object deals with logging for the system.

Takes an optional name for this Jifty's logging ``component'' - See the Log::Log4perl manpage for some detail about what that is. It sets up a ``warn'' handler which logs warnings to the specified component.

_warning_action

change the Log4Perl action from warn to error|info|etc based on the content of the warning.

Added because DBD::Pg throws up NOTICE and other messages as warns, and we really want those to be info (or error, depending on the code). List based on Postgres documentation

TODO: needs to be smarter than just string matching

returns a valid Log::Log4Perl action, if nothing matches will return the default of warn since we're in a __WARN__ handler


AUTHOR

Various folks at Best Practical Solutions, LLC.

Mark Fowler <mark@twoshortplanks.com> fiddled a bit.

Programminig
Wy
Wy
yW
Wy
Programming
Wy
Wy
Wy
Wy