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 / JavaMap.pm < prev    next >
Encoding:
Perl POD Document  |  2003-01-14  |  3.7 KB  |  130 lines

  1. package Log::Log4perl::JavaMap;
  2.  
  3. use Carp;
  4. use strict;
  5.  
  6. use constant DEBUG => 0;
  7.  
  8. our %translate = (
  9.     'org.apache.log4j.ConsoleAppender' => 
  10.         'Log::Log4perl::JavaMap::ConsoleAppender',
  11.     'org.apache.log4j.FileAppender'    => 
  12.         'Log::Log4perl::JavaMap::FileAppender',
  13.     'org.apache.log4j.RollingFileAppender'    => 
  14.         'Log::Log4perl::JavaMap::RollingFileAppender',
  15.     'org.apache.log4j.TestBuffer'    => 
  16.         'Log::Log4perl::JavaMap::TestBuffer',
  17.      'org.apache.log4j.jdbc.JDBCAppender'    => 
  18.         'Log::Log4perl::JavaMap::JDBCAppender',
  19.      'org.apache.log4j.SyslogAppender'    => 
  20.         'Log::Log4perl::JavaMap::SyslogAppender',
  21.      'org.apache.log4j.NTEventLogAppender'    => 
  22.         'Log::Log4perl::JavaMap::NTEventLogAppender',
  23. );
  24.  
  25. sub get {
  26.     my ($appender_name, $appender_data) = @_;
  27.  
  28.     print "Trying to map $appender_name\n" if DEBUG;
  29.  
  30.     $appender_data->{value} ||
  31.             die "ERROR: you didn't tell me how to implement your appender " .
  32.                 "'$appender_name'";
  33.  
  34.     my $perl_class = $translate{$appender_data->{value}} || 
  35.             die "ERROR:  I don't know how to make a '$appender_data->{value}' " .
  36.                 "to implement your appender '$appender_name', that's not a " .
  37.                 "supported class\n";
  38.     eval {
  39.         eval "require $perl_class";  #see 'perldoc -f require' for why two evals
  40.         die $@ if $@;
  41.     };
  42.     $@ and die "ERROR: trying to set appender for $appender_name to " .
  43.                "$appender_data->{value} using $perl_class failed\n$@  \n";
  44.  
  45.     my $app = $perl_class->new($appender_name, $appender_data);
  46.     return $app;
  47. }
  48.  
  49. 1;
  50.  
  51.  
  52. =head1 NAME
  53.  
  54. Log::Log4perl::JavaMap - maps java log4j appenders to Log::Dispatch classes
  55.  
  56. =head1 SYNOPSIS
  57.  
  58.      ###############################
  59.      log4j.appender.FileAppndr1        = org.apache.log4j.FileAppender
  60.      log4j.appender.FileAppndr1.File   = /var/log/onetime.log
  61.      log4j.appender.FileAppndr1.Append = false
  62.  
  63.      log4j.appender.FileAppndr1.layout = org.apache.log4j.PatternLayout
  64.      log4j.appender.FileAppndr1.layout.ConversionPattern=%d %4r [%t] %-5p %c %x - %m%n
  65.      ###############################
  66.  
  67.  
  68. =head1 DESCRIPTION
  69.  
  70. If somebody wants to create an appender called C<org.apache.log4j.ConsoleAppender>,
  71. we want to translate it to Log::Dispatch::Screen, and then translate
  72. the log4j options into Log::Dispatch parameters..
  73.  
  74. =head2 What's Implemented
  75.  
  76. (Note that you can always use the Log::Dispatch::* module.  By 'implemented'
  77. I mean having a translation class that translates log4j options into
  78. the Log::Dispatch options so you can use log4j rather than log4perl 
  79. syntax in your config file.)
  80.  
  81. Here's the list of appenders I see on the current (6/2002) log4j site.
  82.  
  83. These are implemented
  84.  
  85.     ConsoleAppender     - Log::Dispatch::Screen
  86.     FileAppender        - Log::Dispatch::File
  87.     RollingFileAppender - Log::Dispatch::FileRotate (by Mark Pfeiffer)
  88.     JDBCAppender        - Log::Log4perl::Appender::DBI
  89.     SyslogAppender      - Log::Dispatch::Syslog
  90.     NTEventLogAppender  - Log::Dispatch::Win32EventLog
  91.  
  92.  
  93. These should/will/might be implemented
  94.     
  95.     DailyRollingFileAppender - 
  96.     SMTPAppender     - Log::Dispatch::Email::MailSender
  97.     
  98.  
  99. These might be implemented but they don't have corresponding classes
  100. in Log::Dispatch (yet):
  101.  
  102.     NullAppender
  103.     TelnetAppender
  104.  
  105. These might be simulated
  106.  
  107.     LF5Appender - use Tk?
  108.     ExternallyRolledFileAppender - catch a HUP instead?
  109.  
  110. These will probably not be implemented
  111.  
  112.     AsyncAppender
  113.     JMSAppender
  114.     SocketAppender - (ships a serialized LoggingEvent to the server side)
  115.     SocketHubAppender
  116.  
  117.  
  118. =head1 AUTHORS
  119.  
  120.     Kevin Goess, <cpan@goess.org> 
  121.     Mike Schilli, <m@perlmeister.com>
  122.     
  123.     June, 2002
  124.  
  125. =head1 SEE ALSO
  126.  
  127. http://jakarta.apache.org/log4j/docs/
  128.  
  129. =cut
  130.