NAME
Log::Handler::Config - The main config loader.
SYNOPSIS
use Log::Handler;my $log = Log::Handler->new();# Config::General$log->config(config => 'file.conf');# Config::Properties$log->config(config => 'file.props');# YAML$log->config(config => 'file.yaml');
Or
use Log::Handler;my $log = Log::Handler->new();$log->config(config => 'file.conf'plugin => 'YAML',);
DESCRIPTION
This module makes it possible to load the configuration from a file. The configuration type is determined by the file extension. It's also possible to mix file extensions with another configuration types.
PLUGINS
Plugin name File extensions------------------------------------------Config::General cfg, confConfig::Properties props, jcfg, jconfYAML yml, yaml
If the extension is not defined then "Config::General" is used by default.
METHODS
config()
With this method it's possible to load the configuration for your outputs.
The following options are valid:
- config
-
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);
- plugin
-
With this option it's possible to say which plugin you want to use. Maybe you want to use the file extension
"conf"with"YAML", which is reserved for the plugin"Config::General".Examples:
# this would use Config::General$log->config(config => 'file.conf');# this would force .conf with YAML$log->config(config => 'file.conf',plugin => 'YAML');
- section
-
If you want to write the configuration into a global configuration file then you can create a own section for the logger:
<logger><file>filename = file.logminlevel = emergmaxlevel = warning</file><screen>minlevel = emergmaxlevel = debug</screen></logger><another_script_config>foo = barbar = bazbaz = foo</another_script_config>Now your configuration is placed in the
"logger"section. You can load this section with$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} );
PLUGINS
Config::General - inspired by the well known apache config formatConfig::Properties - Java-style property filesYAML - optimized for human readability
EXAMPLES
Config structures
A very simple configuration looks like:
$log->config(config => {file => {alias => 'file1',filename => 'file1.log',maxlevel => 'info',minlevel => 'warn',},screen => {alias => 'screen1',maxlevel => 'debug',minlevel => 'emerg',}});
Now, if you want to add another file-output then you can pass the outputs with a array reference:
$log->config(config => {file => [{alias => 'file1,filename => 'file1.log',maxlevel => 'info',minlevel => 'warn',},{alias => 'file2',filename => 'file2.log',maxlevel => 'error',minlevel => 'emergency',}],screen => {alias => 'screen1',maxlevel => 'debug',minlevel => 'emerg',},});
It's also possible to pass the outputs as a hash reference. The hash keys "file1" and "file2" will be used as aliases.
$log->config(config => {file => {file1 => {filename => 'file1.log',maxlevel => 'info',minlevel => 'warn',},file2 => {filename => 'file2.log',maxlevel => 'error',minlevel => 'emergency',}},screen => {alias => 'screen1',maxlevel => 'debug',minlevel => 'emerg',},});
If you pass the configuration with the alias as a hash key then it's also possible to pass a section called "default". The options from this section will be used as defaults.
$log->config(config => {file => {default => { # defaults for all file-outputsmode => 'append',},file1 => {filename => 'file1.log',maxlevel => 'info',minlevel => 'warn',},file2 => {filename => 'file2.log',maxlevel => 'error',minlevel => 'emergency',}},screen => {alias => 'screen1',maxlevel => 'debug',minlevel => 'emerg',},});
Examples for the config plugins
Config::General
<file>alias = file1fileopen = 1reopen = 1permissions = 0640maxlevel = infominlevel = warnmode = appendtimeformat = %b %d %H:%M:%Sdebug_mode = 2filename = example.logmessage_layout = '%T %H[%P] [%L] %S: %m'</file>
Or
<file><file1>fileopen = 1reopen = 1permissions = 0640maxlevel = infominlevel = warnmode = appendtimeformat = %b %d %H:%M:%Sdebug_mode = 2filename = example.logmessage_layout = '%T %H[%P] [%L] %S: %m'</file1></file>
YAML
---file:alias: file1debug_mode: 2filename: example.logfileopen: 1maxlevel: infominlevel: warnmode: appendpermissions: 0640message_layout: '%T %H[%P] [%L] %S: %m'reopen: 1timeformat: '%b %d %H:%M:%S'
Or
---file:file1:debug_mode: 2filename: example.logfileopen: 1maxlevel: infominlevel: warnmode: appendpermissions: 0640message_layout: '%T %H[%P] [%L] %S: %m'reopen: 1timeformat: '%b %d %H:%M:%S'
Config::Properties
file.alias = file1file.reopen = 1file.fileopen = 1file.maxlevel = infofile.minlevel = warnfile.permissions = 0640file.mode = appendfile.timeformat = %b %d %H:%M:%Sfile.debug_mode = 2file.filename = example.logfile.message_layout = '%T %H[%P] [%L] %S: %m'
Or
file.file1.alias = file1file.file1.reopen = 1file.file1.fileopen = 1file.file1.maxlevel = infofile.file1.minlevel = warnfile.file1.permissions = 0640file.file1.mode = appendfile.file1.timeformat = %b %d %H:%M:%Sfile.file1.debug_mode = 2file.file1.filename = example.logfile.file1.message_layout = '%T %H[%P] [%L] %S: %m'
PREREQUISITES
CarpParams::Validate
EXPORTS
No exports.
REPORT BUGS
Please report all bugs to <jschulz.cpan(at)bloonix.de>.
If you send me a mail then add Log::Handler into the subject.
AUTHOR
Jonny Schulz <jschulz.cpan(at)bloonix.de>.
COPYRIGHT
Copyright (C) 2007-2009 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.