Log::H...Config(3pm)
π Log::H...Config β the main config loader (3pm) π
okay so bestie, welcome to Log::Handler::Config β she's the main config loader, she lives in the Perl user-contributed docs (that's the 3pm thing you see floating around), and honestly? she's iconic. she eats files and turns them into logging configs. no cap. π
β¨ NAME β¨
Log::Handler::Config - The main config loader.
like she literally just loads your config. that's the whole job. queen behavior. π
π 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 π¦
So this module? She 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. yes she's flexible like that π
π PLUGINS π
Plugin name File extensions
------------------------------------------
Config::General cfg, conf
Config::Properties props, jcfg, jconf
YAML yml, yaml
And listen β if the extension is not defined then Config::General is used by default. She's got a favorite and it's not sorry about it π
π METHODS π
π₯ config()
With this method it's possible to load the configuration for your outputs. bestie this is the method. main character energy fr fr.
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 extensionconfwithYAML, which is reserved for the pluginConfig::General. like, you can force it. rebellious. π
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.log
minlevel = emerg
maxlevel = warning
</file>
<screen>
minlevel = emerg
maxlevel = debug
</screen>
</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
$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. cute AND practical π₯°
$log->config(config => {
file => {
default => { # defaults for all file-outputs
mode => '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 = file1
fileopen = 1
reopen = 1
permissions = 0640
maxlevel = info
minlevel = warn
mode = append
timeformat = %b %d %H:%M:%S
debug_mode = 2
filename = example.log
message_layout = '%T %H[%P] [%L] %S: %m'
</file>
Or β¨
<file>
<file1>
fileopen = 1
reopen = 1
permissions = 0640
maxlevel = info
minlevel = warn
mode = append
timeformat = %b %d %H:%M:%S
debug_mode = 2
filename = example.log
message_layout = '%T %H[%P] [%L] %S: %m'
</file1>
</file>
YAML
---
file:
alias: file1
debug_mode: 2
filename: example.log
fileopen: 1
maxlevel: info
minlevel: warn
mode: append
permissions: 0640
message_layout: '%T %H[%P] [%L] %S: %m'
reopen: 1
timeformat: '%b %d %H:%M:%S'
Or β¨
---
file:
file1:
debug_mode: 2
filename: example.log
fileopen: 1
maxlevel: info
minlevel: warn
mode: append
permissions: 0640
message_layout: '%T %H[%P] [%L] %S: %m'
reopen: 1
timeformat: '%b %d %H:%M:%S'
Config::Properties
file.alias = file1
file.reopen = 1
file.fileopen = 1
file.maxlevel = info
file.minlevel = warn
file.permissions = 0640
file.mode = append
file.timeformat = %b %d %H:%M:%S
file.debug_mode = 2
file.filename = example.log
file.message_layout = '%T %H[%P] [%L] %S: %m'
Or β¨
file.file1.alias = file1
file.file1.reopen = 1
file.file1.fileopen = 1
file.file1.maxlevel = info
file.file1.minlevel = warn
file.file1.permissions = 0640
file.file1.mode = append
file.file1.timeformat = %b %d %H:%M:%S
file.file1.debug_mode = 2
file.file1.filename = example.log
file.file1.message_layout = '%T %H[%P] [%L] %S: %m'
π PREREQUISITES π
Carp
Params::Validate
π EXPORTS π
No exports.
like. none. nothing to hand out. she keeps it all to herself π
π 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.
bestie PLEASE put Log::Handler in the subject line, the author is literally asking. do it for him. π
π 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.
and that's the whole page, bestie π«Ά this was perl v5.36.0, dated 2022-08-28, straight out of Log::H...Config(3pm) in the User Contributed Perl Documentation. go forth and configure slayfully. β¨ππ¦
π¦ where this page comes from
- ubuntu noble: liblog-handler-perl 0.90-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: liblog-handler-perl 0.90-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: liblog-handler-perl 0.90-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms