Provided by: liblog-dispatch-configurator-any-perl_1.122640-1_all bug

NAME

       Log::Dispatch::Configurator::Any - Configurator implementation with Config::Any

VERSION

       version 1.122640

PURPOSE

       Use this module in combination with Log::Dispatch::Config to allow many formats of
       configuration file to be loaded, via the Config::Any module.

SYNOPSIS

       In the traditional Log::Dispatch::Config way:

        use Log::Dispatch::Config; # loads Log::Dispatch
        use Log::Dispatch::Configurator::Any;

        my $config = Log::Dispatch::Configurator::Any->new('log.yml');
        Log::Dispatch::Config->configure($config);

        # nearby piece of code
        my $log = Log::Dispatch::Config->instance;
        $log->alert('Hello, world!');

       Alternatively, without a config file on disk:

        use Log::Dispatch::Config; # loads Log::Dispatch
        use Log::Dispatch::Configurator::Any;

        my $confhash = {
            dispatchers => ['screen]',
            screen = {
                class => 'Log::Dispatch::Screen',
                min_level => 'debug',
            },
        };

        my $config = Log::Dispatch::Configurator::Any->new($confhash);
        Log::Dispatch::Config->configure($config);

        # nearby piece of code
        my $log = Log::Dispatch::Config->instance;
        $log->alert('Hello, world!');

DESCRIPTION

       Log::Dispatch::Config is a wrapper for Log::Dispatch and provides a way to configure
       Log::Dispatch objects with configuration files. Somewhat like a lite version of log4j and
       Log::Log4perl it allows multiple log destinations. The standard configuration file format
       for Log::Dispatch::Config is AppConfig.

       This module plugs in to Log::Dispatch::Config and allows the use of other file formats, in
       fact any format supported by the Config::Any module. As a bonus you can also pass in a
       configuration data structure instead of a file name.

USAGE

       Follow the examples in the "SYNOPSIS". If you are using an external configuration file, be
       aware that you are required to use a filename extension (e.g.  ".yml" for YAML).

       Below are a couple of tips and tricks you may find useful.

   Fall-back default config
       Being able to use a configuration data structre instead of a file on disk is handy when
       you want to provide application defaults which the user then replaces with their own
       settings. For example you could have the following:

        my $defaults = {
            dispatchers => ['screen'],
            screen => {
                class     => 'Log::Dispatch::Screen',
                min_level => 'debug',
            },
        };

        my $config_file = '/etc/myapp_logging.conf';
        my $config = $ENV{MYAPP_LOGGING_CONFIG} || $ARGV[0] ||
            ( -e $config_file ? $config_file : $defaults);

        Log::Dispatch::Config->configure_and_watch(
            Log::Dispatch::Configurator::Any->new($config) );
        my $dispatcher = Log::Dispatch::Config->instance;

       With the above code, your application will check for a filename in an environment
       variable, then a filename as a command line argument, then check for a file on disk, and
       finally use its built-in defaults.

   Dealing with a "dispatchers" list
       Log::Dispatch::Config requires that a global setting "dispatchers" have a list value (i.e.
       your list of dispatchers). A few config file formats do not support list values at all, or
       list values at the global level (two examples being Config::Tiny and Config::General).

       This module allows you to have a small grace when there is only one dispatcher in use.
       Write the configuration file normally, and the single-item "dispatchers" value will
       automatically be promoted to a list. In other words:

        # myapp.ini
        dispatchers = screen

        # this becomes a config of:
        $config = { dispatchers => 'screen', ... };

        # so this module promotes it to:
        $config = { dispatchers => ['screen'], ... };

       If you want more than one dispatcher, you then need to use a config file format which
       supports these lists natively, I'm afraid. A good suggestion might be YAML.

THANKS

       My thanks to "miyagawa" for writing Log::Dispatch::Config, from where I also took some
       tests. Also thanks to Florian Merges for his YAML Configurator, which was a useful example
       and saved me much time.

AUTHOR

       Oliver Gorwits <oliver@cpan.org>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2012 by University of Oxford.

       This is free software; you can redistribute it and/or modify it under the same terms as
       the Perl 5 programming language system itself.