logging-log4j-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From p...@mindspring.com
Subject RE: conditional logging of exception
Date Fri, 21 Mar 2008 15:05:46 GMT
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 <HBender@Ergonomics.ch>
>Sent: Mar 20, 2008 5:27 PM
>To: Log4J Users List <log4j-user@logging.apache.org>, pico@mindspring.com
>Subject: RE: conditional logging of exception




---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org


Mime
View raw message