The results you claim are surprising. I don't expect it to check for the existence of a logger but I do expect the fact that the effective level is info would cause isDebugEnabled() to return false.
On 3/15/07, John Eisenman <[EMAIL PROTECTED]> wrote:
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]
-- James Stauffer http://www.geocities.com/stauffer_james/ Are you good? Take the test at http://www.livingwaters.com/good/ --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]