How do I integrate with a third party logging framework
EclipseLink's default logging is based on Java (1.4 an higher) java.util.logging but is also extensible to allow other logging frameworks to be used.
This how-to example will illustrate how other logging solutions such as Log4J and Apache common logging can be easily used with EclipseLink.
Logging Extension Basics
Customizing EclipseLink to use another logging framework or integrate with an existing logging infrastructure involves:
- Implementing your own SessionLog
- Configuring the use of your SessionLog
An eclipselink bug report exists for that point : https://bugs.eclipse.org/bugs/show_bug.cgi?id=232240
It deals about apache commons Logging 1.1 & Log4J integration with eclipseLink 1.0 (so 1.1 should be supported too).
How to use Log4J :
- add apache commons logging 1.1 & log4J libraries in your classpath
- add the sample log4.xml in your classpath : https://bugs.eclipse.org/bugs/attachment.cgi?id=103596
- add the following class in the org.eclipse.persistence.logging package of your own project : https://bugs.eclipse.org/bugs/attachment.cgi?id=104821
- add the following lines to your persistence.xml :
<property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.CommonsLoggingSessionLog"/>
- Compile & deploy your code : that's done.
About log4J levels & eclipselink log levels :
Of course, you should check that the log4J level for the org.eclipse.persistence logger (and your root logger and appenders) is compatible with the eclipselink.logging.level.
For example, in log4j.xml :
<logger name="org.eclipse.persistence"> <level value="info"/> </logger>
In persistence.xml :
eclipselink.logging.level = SEVERE
Change Log levels at runtime : As you may not know, log4J levels can be changed at runtime for debug purposes :
see the CommonsLoggingSessionLog#setLevel() method :
Set the lw lev to a logger with name space extracted from the given category.
* * @param level * @param category */ @Override public void setLevel(final int level, final String category)
Using Apache Commons Logging