Hi,

I have some problems configuring Log4J for
my requirements.
Perhaps I am missing something or doing something
wrong.

I want to configure a Category, which exclusively
uses exactly one specified Appender.
When I am using a property file with the
following entries, it works for me:

# file DemoEditor.properties
log4j.debug=true
log4j.rootCategory=INFO, Konsole, Datei

# settings for Konsole and Datei omitted

# relevant settings
log4j.appender.Proto=org.apache.log4j.RollingFileAppender
log4j.appender.Proto.File=${user.home}/CommandProtokoll.log
log4j.appender.Proto.layout=org.apache.log4j.xml.XMLLayout

log4j.category.Protokoll=INFO, Proto
log4j.additivity.Protokoll=false
# end

Category Protokoll only uses Appender Proto, OK.

The problem arises, when I want to configure the rootCategory
and its appenders via the configuration file as above, but
the options for category Protokoll and the appender Proto
via system properties instead of supplying these
with the property file.

I am doing the following in my application:

// setting options via system properties

System.setProperty("log4j.appender.Proto",
        "org.apache.log4j.RollingFileAppender");
System.setProperty("log4j.appender.Proto.File",
        System.getProperty("user.home") +
        System.getProperty("line.separator") +
      "CommandProtokoll.log");
System.setProperty("log4j.appender.Proto.layout",
        "org.apache.log4j.xml.XMLLayout");
System.setProperty("log4j.category.Protokoll","INFO, Proto");
System.setProperty("log4j.additivity.Protokoll","false");

Properties props = new Properties(System.getProperties());

// load other properties via config file
try {
        props.load(new java.io.FileInputStream("DemoEditor.properties"));
}
catch(Exception ex) {};

// configure log4j
org.apache.log4j.PropertyConfigurator.configure(props);


In this case the relevant debug output of log4j is:
...
log4j: Parsing for [Protokoll] with value=[INFO, Proto].
log4j: Priority token is [INFO].
log4j: Category Protokoll set to INFO
log4j: Parsing appender named "Proto".
log4j:WARN File option not set for appender [Proto].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?
log4j: Parsing layout options for "Proto".
log4j: End of parsing for "Proto".
log4j: Parsed "Proto" options.
log4j: Handling log4j.additivity.Protokoll=[false]
log4j: Setting additivity for "Protokoll" to false
log4j: Finished configuring.

Why does log4j behave differently here ?
It seems to ignore at least the File property of appender Proto.

Am I missing something here or is this some kind of bug ?
At least it looks like an inconsistent behaviour to me.


Thanks for your help,
Holger


P.S.:
I am using:
log4j 1.2.1
Win 2000
JDK 1.3.1-b24 (JDK of JBuilder 6)


----
Holger Brands
eurodata GmbH & Co. KG
Großblittersdorfer Straße 257-259
66119 Saarbrücken


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to