home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2004 December / PCpro_2004_12.ISO / files / webserver / tsw / TSW_3.4.0.exe / Apache2 / perl / RollingFileAppender.pm < prev    next >
Encoding:
Perl POD Document  |  2003-01-14  |  2.9 KB  |  118 lines

  1. package Log::Log4perl::JavaMap::RollingFileAppender;
  2.  
  3. use Carp;
  4. use strict;
  5. use Log::Dispatch::FileRotate;
  6.  
  7.  
  8. sub new {
  9.     my ($class, $appender_name, $data) = @_;
  10.     my $stderr;
  11.  
  12.     my $filename =  $data->{File}{value} || 
  13.                 $data->{filename}{value} || 
  14.                 die "'File' not supplied for appender '$appender_name', required for a '$data->{value}'\n";
  15.  
  16.     my $mode;
  17.     if (defined($data->{Append}{value})){
  18.         if (lc $data->{Append}{value} eq 'true' || $data->{Append}{value} == 1){
  19.             $mode = 'append';
  20.         }elsif (lc $data->{Append}{value} eq 'false' || $data->{Append}{value} == 0) {
  21.             $mode = 'write';
  22.         }elsif($data->{Append} =~ /^(write|append)$/){
  23.             $mode = $data->{Append}
  24.         }else{
  25.             die "'$data->{Append}' is not a legal value for Append for appender '$appender_name', '$data->{value}'\n";
  26.         }
  27.     }else{
  28.         $mode = 'append';
  29.     }
  30.  
  31.     my $autoflush;
  32.     if (defined($data->{BufferedIO}{value})){
  33.         if (lc $data->{BufferedIO}{value} eq 'true' || $data->{BufferedIO}{value}){
  34.             $autoflush = 1;
  35.         }elsif (lc $data->{BufferedIO}{value} eq 'true' || ! $data->{BufferedIO}{value}) {
  36.             $autoflush = 0;
  37.         }else{
  38.             die "'$data->{BufferedIO}' is not a legal value for BufferedIO for appender '$appender_name', '$data->{value}'\n";
  39.         }
  40.     }else{
  41.         $autoflush = 1;
  42.     }
  43.  
  44.     my $max;
  45.     if (defined $data->{MaxBackupIndex}{value}) {
  46.         $max = $data->{MaxBackupIndex}{value};
  47.     }elsif (defined $data->{max}{value}){
  48.         $max = $data->{max}{value};
  49.     }else{
  50.         $max = 1;
  51.  
  52.     }
  53.  
  54.     my $size;
  55.     if (defined $data->{MaxFileSize}{value}) {
  56.         $size = $data->{MaxFileSize}{value}
  57.     }elsif (defined $data->{size}{value}){
  58.         $size = $data->{size}{value};
  59.     }else{
  60.         $size = 10_000_000;
  61.     }
  62.  
  63.  
  64.     return Log::Log4perl::Appender->new("Log::Dispatch::FileRotate",
  65.         name      => $appender_name,
  66.         filename  => $filename,
  67.         mode      => $mode,
  68.         autoflush => $autoflush,
  69.         size      => $size,
  70.         max       => $max,
  71.     );
  72. }
  73.  
  74. 1;
  75.  
  76. =head1 NAME
  77.  
  78. Log::Log4perl::JavaMap::RollingFileAppender - wraps Log::Dispatch::FileRotate
  79.  
  80. =head1 SYNOPSIS
  81.  
  82.  
  83. =head1 DESCRIPTION
  84.  
  85. This maps log4j's RollingFileAppender to Log::Dispatch::FileRotate 
  86. by Mark Pfeiffer, <markpf@mlp-consulting.com.au>.
  87.  
  88. Possible config properties for log4j ConsoleAppender are 
  89.  
  90.     File
  91.     Append      "true|false|1|0" default=true
  92.     BufferedIO  "true|false|1|0" default=false (i.e. autoflush is on)
  93.     MaxFileSize default 10_000_000
  94.     MaxBackupIndex default is 1
  95.  
  96. Possible config properties for Log::Dispatch::FileRotate are
  97.  
  98.     filename
  99.     mode  "write|append"
  100.     autoflush 0|1
  101.     size
  102.     max
  103.  
  104. =head1 AUTHORS
  105.  
  106.     Kevin Goess, <cpan@goess.org> 
  107.     Mike Schilli, <m@perlmeister.com>
  108.     
  109.     November, 2002
  110.  
  111. =head1 SEE ALSO
  112.  
  113. http://jakarta.apache.org/log4j/docs/
  114.  
  115. Log::Log4perl::Javamap
  116.  
  117. =cut
  118.