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]

Reply via email to