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 <[email protected]>, [EMAIL PROTECTED]
>Subject: RE: conditional logging of exception
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]