Log::Handler::Config - The main config loader.
use Log::Handler; my $log = Log::Handler->new(); $log->config( config => 'file.conf', plugin => 'YAML', section => 'section-name', );
Or
use Log::Handler; use Log::Handler::Config; my $conf = Log::Handler::Config->config( config => 'file.conf', plugin => 'YAML', section => 'section-name', ); my $log = Log::Handler->new(); while ( my ($type, $config) = each %$conf ) { $log->add($type => $config); }
This module makes it possible to load the configuration from a file.
With this method it's possible to load the configuration for your outputs.
The following options are valid:
With this option you can pass a file name or the configuration as a hash reference.
$log->config(config => 'file.conf'); # or $log->config(config => \%config);
If you set a file name then the file extension is used to determine the configuration style:
Config::General - cfg, conf Config::Properties - props, jcfg, jconf YAML - yml, yaml
With this option you can set the plugin you want to use. There are 3 plugins available at the moment.
Config::General Config::Properties YAML
Examples:
# use file.conf and YAML $log->config( config => 'file.conf', plugin => 'YAML' ); # automatically use YAML $log->config(config => 'file.yaml'); # automatically use Config::General $log->config(config => 'file.conf');
If the extension is not defined then Config::General is used by default.
Config::General
If you want to write the configuration into a global configuration file then you can create a own section for the logger:
<logger> <file> <mylog> filename = file.log minlevel = 0 maxlevel = 7 </mylog> </file> </logger> <another_script_config> foo = bar bar = baz baz = foo </another_script_config>
Now your configuration is placed in the logger section. You can load this section with
logger
$log->config( config => 'file.conf', section => 'logger', ); # or if you load the configuration yourself to $config $log->config( config => $config, section => 'logger', ); # or just $log->config( config => $config->{logger} );
Note that the section mylog is used as an alias. Later you get it with
mylog
alias
my $file_output = $log->get_output('mylog');
Config::General - inspired by the well known apache config format Config::Properties - Java-style property files YAML - optimized for human readability
For each output object it must exist a own section. Here a example as hash:
my %config = ( # the configuration for a file file => { foo => { filename => 'file1.log', maxlevel => 'info', minlevel => 'warn', }, bar => { filename => 'file2.log', maxlevel => 'error', minlevel => 'emergency', } } # the configuration for email email => { foo => host => 'foo.example', from => 'me@me.example', to => 'you@foo.example', maxlevel => 'error', minlevel => 'emergency', }, # and_so_on ... } );
You can store your configuration to a file and loads it. There are different config plugins available.
If your configuration contains a default section then this parameters are used for all other sections. Example:
default
my %config = ( # the configuration for a file file => { default => { mode => 'append', }, foo => { filename => 'file1.log', maxlevel => 'info', minlevel => 'warn', }, bar => { filename => 'file2.log', maxlevel => 'error', minlevel => 'emergency', }, baz => { filename => 'file3.log', maxlevel => 'debug', minlevel => 'debug', mode => 'trunc', }, }, # the configuration for dbi dbi => { ... } );
The option mode is set to append for the log file file1.log and file2.log. The configuration for file3.log will be set to trunc.
mode
append
file1.log
file2.log
file3.log
trunc
<file> <mylog> fileopen = 1 reopen = 1 permissions = 0640 maxlevel = info mode = append timeformat = %b %d %H:%M:%S debug_mode = 2 filename = example.log minlevel = warn message_layout = '%T %H[%P] [%L] %S: %m' newline = 1 </mylog> </file>
--- file: mylog: debug_mode: 2 filename: example.log fileopen: 1 maxlevel: info minlevel: warn mode: append newline: 1 permissions: 0640 message_layout: '%T %H[%P] [%L] %S: %m' reopen: 1 timeformat: '%b %d %H:%M:%S'
file.mylog.reopen = 1 file.mylog.fileopen = 1 file.mylog.maxlevel = info file.mylog.permissions = 0640 file.mylog.mode = append file.mylog.timeformat = %b %d %H:%M:%S file.mylog.debug_mode = 2 file.mylog.minlevel = warn file.mylog.filename = example.log file.mylog.newline = 1 file.mylog.message_layout = '%T %H[%P] [%L] %S: %m'
The config (Config::General)
<output> <file> <default> newline = 1 permissions = 0640 timeformat = %b %d %H:%M:%S fileopen = 1 reopen = 1 mode = append message_layout = "%T %H[%P] [%L] %S: %m" debug_mode = 2 </default> <common> filename = example.log maxlevel = info minlevel = warn </common> <error> filename = example-error.log maxlevel = warn minlevel = emergency </error> <debug> filename = example-debug.log maxlevel = debug minlevel = debug </debug> </file> </output>
Load the config
$log->config( config => 'file.conf', section => 'output', );
<file> <default> newline = 1 permissions = 0640 timeformat = %b %d %H:%M:%S fileopen = 1 reopen = 1 mode = append message_layout = "%T %H[%P] [%L] %S: $m" debug_mode = 2 </default> <common> filename = example.log maxlevel = info minlevel = warn </common> <error> filename = example-error.log maxlevel = warn minlevel = emergency </error> <debug> filename = example-debug.log maxlevel = debug minlevel = debug </debug> </file>
$log->config(config => 'file.conf');
$log->config( config => { file => { default => { newline => 1, permissions => '0640', timeformat => '%b %d %H:%M:%S', fileopen => 1, reopen => 1, mode => 'append message_layout => '%T %H[%P] [%L] %S: %m', debug_mode => 2, }, common => { filename => 'example.log', maxlevel => 'info', minlevel => 'warn', }, error => { filename => 'example-error.log', maxlevel => 'warn', minlevel => 'emergency', }, debug => { filename => 'example-debug.log', maxlevel => 'debug', minlevel => 'debug', }, } } );
<output> <file> <default> newline = 1 permissions = 0640 timeformat = %b %d %H:%M:%S fileopen = 1 reopen = 1 mode = append message_layout = "%T %H[%P] [%L] %S: %m" debug_mode = 2 </default> <common> filename = example.log maxlevel = info minlevel = warn </common> <error> filename = example-error.log maxlevel = warn minlevel = emergency </error> </file> </output>
Carp Params::Validate UNIVERSAL::require
No exports.
Please report all bugs to <jschulz.cpan(at)bloonix.de>.
Jonny Schulz <jschulz.cpan(at)bloonix.de>.
Do you have any questions or ideas?
MAIL: <jschulz.cpan(at)bloonix.de>
If you send me a mail then add Log::Handler into the subject.
* Log::Handler::Output::DBI * Log::Handler::Output::Socket
Copyright (C) 2007 by Jonny Schulz. All rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install Log::Handler, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Log::Handler
CPAN shell
perl -MCPAN -e shell install Log::Handler
For more information on module installation, please visit the detailed CPAN module installation guide.