Thank you for your response. (A) Sometimes we run third party libraries in a container that are very noisy. Given this situation, we have two choices: (1) log the exception and fill up the log file, (2) decrease the logging level and miss the exception entirely.
It seems like it would be nice to have a third state: log a one liner summary of the error. (B) Sometimes exceptions are not exceptional. Their generation depends on the mood, at the time, of whatever developer coded the library you are using. ----- The class org.apache.log4j.Logger seems like it is coded with these distinctions in mind, since there are two APIs for any given log level: logger.debug(Object) logger.debug(Object, Throwable) logger.error(Object) logger.error(Object, Throwable) and so on. Part of the rationale for log4j is that you can adjust the log level (and thus the log output) without changing code. In the end, I suppose what I am driving at is, for each level, there should be a third API, that controls whether logger.error(O) or logger.error(O, T) is used, based on the current logger Level. Level.FATAL: log nothing Level.ERROR: log the Object ... Level.DEBUG: log the Object and the stack trace Since this API doesn't exist, I'm trying to work around it. ----- With regard to the suggestion of using the FQCN API, there seems to be a problem using it with the Appender layout options "%C:%-4L". When I use BasicConfigurator.configure(), I get: .0 [main] ERROR mycompany.test.LoggerTest - java.lang.Exception 0 [main] ERROR mycompany.test.LoggerTest - java.lang.Exception java.lang.Exception at mycompany.test.LoggerTest.logSomeStuff(LoggerTest.java:36) at mycompany.test.LoggerTest.testBasicLogging(LoggerTest.java:17) which is what I want. If I configure my logger with the appender layout: %d [%t] %-5p %C:%-4L - %m%n ... then I get: 2008-03-21 11:00:42,338 [main] ERROR ?:? - java.lang.Exception 2008-03-21 11:00:42,354 [main] ERROR ?:? - java.lang.Exception java.lang.Exception at mycompany.test.LoggerTest.logSomeStuff(LoggerTest.java:36) at mycompany.test.LoggerTest.testSiteLogging(LoggerTest.java:27) So FQCN affects the first line of the stack trace, which is good, but it messes up the class and line number in the pattern, which is bad. -----Original Message----- >From: Bender Heri <[EMAIL PROTECTED]> >Sent: Mar 20, 2008 5:27 PM >To: Log4J Users List <log4j-user@logging.apache.org>, [EMAIL PROTECTED] >Subject: RE: conditional logging of exception --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]