在WebSphere上使用slf4j进行OpenJPA日志记录

Ste*_*olf 5 websphere openjpa slf4j

我的Java EE 6应用程序使用slf4j作为日志记录框架的logback.现在我想将OpenJpa的SQL跟踪添加到我的日志文件中.OpenJpa-Documentation说,我可以使用一个参数:

<property name="openjpa.Log" value="slf4j"/>
Run Code Online (Sandbox Code Playgroud)

我将WebSphere Application Server v8.0.0.1用作Java EE容器.如果我将我的应用程序部署到服务器,则此参数不会更改任何内容.我可以在WebSphere Admin Console中更改日志级别,这样可以正常工作.但是一个无法绕过OpenJpa日志记录到我的slf4j框架.

有没有人使用这样的配置并解决了这个问题?

顺便说一句.我知道,信息中心 - 文章http://publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=%2Fcom.ibm.websphere.nd.doc%2Finfo%2Fae%2Fae%2Ftejb_jpatroubleshoot .html 说,该参数将被忽略,但一切都应该可以,呃?

Ste*_*olf 0

我解决了。

有四件事要做:

  1. 假设 OpenJpa 记录语句。这是通过 persistence.xml 中的属性条目完成的。
  2. 假设 Slf4j 也必须从 JUL 获取日志。这可以通过 SLF4J 安装 SLF4JBridgeHandler 来完成。我通过 ServletContextListener 安装了桥,该监听器在应用程序启动时调用。
  3. 配置 Logback,使其不记录 JUL 中的所有日志,而仅记录所需的日志。这是通过在 logBack-test.xml 中添加 LevelChangePropagator 来完成的
  4. 要求 WebSphere TraceService 将日志从 OpenJPA 传递到应用程序。这是 WebSphere 管理控制台中的设置