Provided by: liblog-dispatch-dir-perl_0.160-1_all bug

NAME

       Log::Dispatch::Dir - Log messages to separate files in a directory, with rotate options

VERSION

       This document describes version 0.160 of Log::Dispatch::Dir (from Perl distribution Log-Dispatch-Dir),
       released on 2019-01-09.

SYNOPSIS

           use Log::Dispatch::Dir;

           my $dir = Log::Dispatch::Dir->new(
               name => 'dir1',
               min_level => 'info',
               dirname => 'somedir.log',
               filename_pattern => '%Y-%m-%d-%H%M%S.%{ext}',
           );
           $dir->log( level => 'info', message => 'your comment\n" );

           # limit total size
           my $dir = Log::Dispatch::Dir->new(
               # ...
               max_size => 10*1024*1024, # 10MB
           );

           # limit number of files
           my $dir = Log::Dispatch::Dir->new(
               # ...
               max_files => 1000,
           );

           # limit oldest file
           my $dir = Log::Dispatch::Dir->new(
               # ...
               max_age => 10*24*3600, # 10 days
           );

DESCRIPTION

       This module provides a simple object for logging to directories under the Log::Dispatch::* system, and
       automatically rotating them according to different constraints. Each message will be logged to a separate
       file the directory.

       Logging to separate files can be useful for example when dumping whole network responses (like
       HTTP::Response content).

METHODS

   new(%p)
       This method takes a hash of parameters. The following options are valid:

       •   name ($)

           The name of the object (not the dirname!).  Required.

       •   min_level ($)

           The  minimum logging level this object will accept. See the Log::Dispatch documentation on Log Levels
           for more information.  Required.

       •   max_level ($)

           The maximum logging level this obejct will accept. See the Log::Dispatch documentation on Log  Levels
           for  more  information.   This  is not required. By default the maximum is the highest possible level
           (which means functionally that the object has no maximum).

       •   dirname ($)

           The directory to write to.

       •   permissions ($)

           If the directory does not already exist, the permissions that it should be  created  with.  Optional.
           The  argument passed must be a valid octal value, such as 0700 or the constants available from Fcntl,
           like S_IRUSR|S_IWUSR|S_IXUSR.

           See "chmod" in perlfunc  for  more  on  potential  traps  when  passing  octal  values  around.  Most
           importantly, remember that if you pass a string that looks like an octal value, like this:

            my $mode = '0644';

           Then the resulting directory will end up with permissions like this:

            --w----r-T

           which is probably not what you want.

       •   callbacks( \& or [ \&, \&, ... ] )

           This  parameter  may be a single subroutine reference or an array reference of subroutine references.
           These callbacks will be called in the order they are given and passed a hash containing the following
           keys:

            ( message => $log_message, level => $log_level )

           The callbacks are expected to modify the message and then return  a  single  scalar  containing  that
           modified message. These callbacks will be called when either the "log" or "log_to" methods are called
           and will only be applied to a given message once.

       •   filename_pattern ($)

           Names  to  give  to  each  file,  expressed  in  pattern  a  la  strftime()'s.  Optional.  Default is
           '%Y-%m-%d-%H%M%S.pid-%{pid}.%{ext}'. Time is expressed in local time.

           If file of the same name already exists, a suffix ".1", ".2", and so on will be appended.

           Available pattern:

           %Y - 4-digit year number, e.g. 2009
           %y - 2-digit year number, e.g. 09 for year 2009
           %m - 2-digit month, e.g. 04 for April
           %d - 2-digit day of month, e.g. 28
           %H - 2-digit hour, e.g. 01
           %M - 2-digit minute, e.g. 57
           %S - 2-digit second, e.g. 59
           %z - the time zone as hour offset from GMT
           %Z - the time zone or name or abbreviation
           %{pid} - Process ID
           %{ext} - Guessed file extension
                   Try to detect appropriate file extension using File::LibMagic. For example,  if  log  message
                   looks  like  an HTML document, then 'html'. If File::LibMagic is not available or type cannot
                   be detected, defaults to 'log'.

           %% - literal '%' character
       •   filename_sub (\&)

           A more generic mechanism for filename_pattern. If filename_sub is  given,  filename_pattern  will  be
           ignored. The code will be called with the same arguments as log_message() and is expected to return a
           filename. Will die if code returns undef.

       •   max_size ($)

           Maximum  total  size  of  files, in bytes. After the size is surpassed, oldest files (based on ctime)
           will be deleted. Optional. Default is undefined, which means unlimited.

       •   max_files ($)

           Maximum number of files. After this number is surpassed,  oldest  files  (based  on  ctime)  will  be
           deleted. Optional. Default is undefined, which means unlimited.

       •   max_age ($)

           Maximum  age of files (based on ctime), in seconds. After the age is surpassed, files older than this
           age will be deleted. Optional. Default is undefined, which means unlimited.

       •   rotate_probability ($)

           A number between 0 and 1 which specifies the probability that rotate()  will  be  called  after  each
           log_message(). This is a balance between performance and rotate size accuracy. 1 means always rotate,
           0 means never rotate. Optional.  Default is 0.25.

   log_message(message => $)
       Sends  a  message  to  the  appropriate output. Generally this shouldn't be called directly but should be
       called through the "log()" method (in Log::Dispatch::Output).

HOMEPAGE

       Please visit the project's homepage at <https://metacpan.org/release/Log-Dispatch-Dir>.

SOURCE

       Source repository is at <https://github.com/perlancar/perl-Log-Dispatch-Dir>.

BUGS

       Please    report    any    bugs     or     feature     requests     on     the     bugtracker     website
       <https://rt.cpan.org/Public/Dist/Display.html?Name=Log-Dispatch-Dir>

       When  submitting  a  bug  or request, please include a test-file or a patch to an existing test-file that
       illustrates the bug or desired feature.

SEE ALSO

       Log::Dispatch

AUTHOR

       perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE

       This software is copyright (c) 2019, 2017, 2015, 2014, 2013, 2011 by perlancar@cpan.org.

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

perl v5.28.1                                       2019-01-12                            Log::Dispatch::Dir(3pm)