I'm using version 1.2.14
My expectation in using log4j was that a call to logger.isXXXEnabled()
would return true only in the case that a call to logger.XXX("some
message") would result in the message being written to some appender.
However, it appears that the existence of an appender has no bearing the
Enabled call.
For example, I have this simple configuration:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="debug"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n"/>
</layout>
</appender>
<root>
<level value ="info"/>
<appender-ref ref="STDOUT"/>
</root>
</log4j:configuration>
Using this configuration, and this program (based on log4j's examples):
package chapter3;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
public class BugApp3 {
//final static Logger logger = Logger.getLogger(BugApp3.class);
final static Logger logger = Logger.getLogger("chapter3.BugApp3");
public static void main(String[] args) {
DOMConfigurator.configure(args[0]);
logger.info("Entering application.");
//debug is not enabled
logger.debug("Debug is enabled.");
if (logger.isDebugEnabled()) {
logger.info("isDebugEnabled() returns true!");
}
logger.info("Exiting application.");
}
}
I see the following output:
% java chapter3.BugApp3 bug0.xml
0 [main] INFO chapter3.BugApp3 - Entering application.
2 [main] INFO chapter3.BugApp3 - isDebugEnabled() returns true!
3 [main] INFO chapter3.BugApp3 - Exiting application.
However, if I set the root level to "debug" instead, then I get this
output instead:
% java chapter3.BugApp3 bug0.xml
1 [main] INFO chapter3.BugApp3 - Entering application.
3 [main] INFO chapter3.BugApp3 - Exiting application.
Since the goal of an isXXXEnabled() statement is to avoid doing
unnecessary work in the case where it will not result in actual debug
output, it seems unfortunate that it does not take into account the
existence of an appender.
Is this behavior intentional?
-John
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]