---
name: "Log::Log4perl::JavaMap"
section: "3pm"
platform: "linux"
package: "perl-log-log4perl"
version: "1.58-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Log::Log4perl::JavaMap"
---

# Log::Log4perl::JavaMap(3pm)

maps java log4j appenders to Log::Dispatch classes

## NAME

Log::Log4perl::JavaMap - maps java log4j appenders to Log::Dispatch classes

## SYNOPSIS

```
     ###############################
     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
     ###############################
```

## DESCRIPTION

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..

### What's Implemented

(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
```

## ROLL YOUR OWN

Let's say you've in a mixed Java/Perl environment 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 across 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.

## SEE ALSO

http://jakarta.apache.org/log4j/docs/

## LICENSE

Copyright 2002-2026 by Mike Schilli \<m@perlmeister.com\> and Kevin Goess \<cpan@goess.org\>.

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