Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "EclipseLink/Examples/Foundation/Logging"
(→Using Log4J) |
(→Using Apache Commons Logging) |
||
Line 107: | Line 107: | ||
== Using Apache Commons Logging == | == Using Apache Commons Logging == | ||
− | An eclipselink bug report exists : https://bugs.eclipse.org/bugs/show_bug.cgi?id=232240 | + | An eclipselink bug report exists : |
+ | [https://bugs.eclipse.org/bugs/show_bug.cgi?id=232240 : apache commons Logging 1.1 & Log4J integration] | ||
− | It deals about apache commons Logging 1.1 & Log4J integration with eclipseLink 1. | + | It deals about apache commons Logging 1.1 & Log4J integration with eclipseLink 1.x. |
− | To use Apache Commons Logging without Apache Log4J, you can get inspired by this class : https://bugs.eclipse.org/bugs/attachment.cgi?id= | + | To use Apache Commons Logging without Apache Log4J, you can get inspired by this class : |
+ | [https://bugs.eclipse.org/bugs/attachment.cgi?id=135503 : CommonsLoggingSessionLog class] | ||
+ | |||
Just remove any reference to org.apache.log4j classes ... | Just remove any reference to org.apache.log4j classes ... | ||
− | + | Please contribute to eclipselink then. |
Revision as of 02:39, 16 May 2009
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.
Contents
EclipseLink User Guide References
This how-to example will illustrate how other logging solutions such as Log4J and Apache common logging can be easily used with EclipseLink.
References
How to configure a custom logger in JPA
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
Using Log4J
Two bug reports exist for that point :
The first deals about apache commons Logging 1.1 & Log4J integration with eclipseLink 1.x and the second about Log4J integration only.
Both propose custom implementations for the abstract SessionLog class.
How to use Log4J :
- add apache commons logging 1.1 & log4J libraries in your classpath
- add the sample log4.xml in your classpath : log4j.xml template
- add the following classes in the org.eclipse.persistence.logging package of your own project : CommonsLoggingSessionLog class : FastLogFormatter class
- add the following lines to your persistence.xml :
<!-- custom SessionLog implementation to use apache commons logging 1.1 API (so log4J) --> <property name="eclipselink.logging.logger" value="org.eclipse.persistence.logging.CommonsLoggingSessionLog"/>
- Compile & deploy your code : that's done.
About log4J levels & eclipselink log levels :
Altough the log4j.xml defines a log4J level for the 'org.eclipse.persistence' logger, the CommonsLoggingSessionLog overrides that level at runtime to be compatible with the chosen eclipselink.logging.level :
For example, in log4j.xml :
<logger name="org.eclipse.persistence"> <level value="info"/> </logger>
In persistence.xml :
<!-- # ----------------------------------------------------------------------------- # Logging level : # OFF \u2013 disables logging # SEVERE \u2013 logs exceptions indicating EclipseLink cannot continue, as well as any exceptions generated during login. This includes a stack trace. # WARNING \u2013 logs exceptions that do not force EclipseLink to stop, including all exceptions not logged with severe level. This does not include a stack trace. # INFO \u2013 logs the login/logout per sever session, including the user name. After acquiring the session, detailed information is logged. # CONFIG \u2013 logs only login, JDBC connection, and database information. # FINE \u2013 logs SQL. # FINER \u2013 similar to warning. Includes stack trace. # FINEST \u2013 includes additional low level information. # # ----------------------------------------------------------------------------- --> eclipselink.logging.level = SEVERE
However, you should check that your root logger and appenders are well defined to produce log outputs (console, files or whatever appender ...)
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 :
/** * PUBLIC: Set the log level to a logger with name space extracted from the given category. * * @param level value according to the java.util.logging.Levels * @param category category */ @Override public final void setLevel(final int level, final String category)
Using Apache Commons Logging
An eclipselink bug report exists : : apache commons Logging 1.1 & Log4J integration
It deals about apache commons Logging 1.1 & Log4J integration with eclipseLink 1.x.
To use Apache Commons Logging without Apache Log4J, you can get inspired by this class :
: CommonsLoggingSessionLog class
Just remove any reference to org.apache.log4j classes ...
Please contribute to eclipselink then.