Log::Log4perl::JavaMap - maps java log4j appenders to Log::Dispatch classes
############################### log4j.appender.FileAppndr1 = org.apache.log4j.FileAppender log4j.appender.FileAppndr1.File = /var/log/onetime.log log4j.appender.FileAppndr1.Append = false
log4j.appender.FileAppndr1.layout = org.apache.log4j.PatternLayout log4j.appender.FileAppndr1.layout.ConversionPattern=%d %4r [%t] %-5p %c %x - %m%n ###############################
If somebody wants to create an appender called org.apache.log4j.ConsoleAppender
,
we want to translate it to Log::Dispatch::Screen, and then translate
the log4j options into Log::Dispatch parameters..
(Note that you can always use the Log::Dispatch::* module. By 'implemented' I mean having a translation class that translates log4j options into the Log::Dispatch options so you can use log4j rather than log4perl syntax in your config file.)
Here's the list of appenders I see on the current (6/2002) log4j site.
These are implemented
ConsoleAppender - Log::Dispatch::Screen FileAppender - Log::Dispatch::File RollingFileAppender - Log::Dispatch::FileRotate (by Mark Pfeiffer) JDBCAppender - Log::Log4perl::Appender::DBI SyslogAppender - Log::Dispatch::Syslog NTEventLogAppender - Log::Dispatch::Win32EventLog
These should/will/might be implemented DailyRollingFileAppender - SMTPAppender - Log::Dispatch::Email::MailSender
These might be implemented but they don't have corresponding classes in Log::Dispatch (yet):
NullAppender TelnetAppender
These might be simulated
LF5Appender - use Tk? ExternallyRolledFileAppender - catch a HUP instead?
These will probably not be implemented
AsyncAppender JMSAppender SocketAppender - (ships a serialized LoggingEvent to the server side) SocketHubAppender
Let's say you've in a mixed Java/Perl enviroment and you've
come up with some custom Java appender with behavior you want to
use in both worlds, myorg.customAppender
. You write a
Perl appender with the same behavior Myorg::CustomAppender
. You
want to use one config file accross both applications, so the
config file will have to say 'myorg.customAppender'. But
the mapping from myorg.customAppender
to Myorg::CustomAppender
isn't in this JavaMap class, so what do you do?
In your Perl code, before you call Log::Log4perl::init(), do this:
$Log::Log4perl::JavaMap::user_defined{'myorg.customAppender'} = 'Myorg::CustomAppender';
and you can use 'myorg.customAppender' in your config file with impunity.
Kevin Goess, <cpan@goess.org> Mike Schilli, <m@perlmeister.com> June, 2002
http://jakarta.apache.org/log4j/docs/