1

我在我的 WebSphere 应用程序中使用 log4j。我需要调试类org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor,所以我在我的 log4j.xml 文件中创建了记录器:

<logger name="org.springframework">
    <level value="INFO" />
</logger>

<logger name="org.springframework.ejb.access">
    <level value="TRACE" />
</logger>

我还在commons-logging.propertiesweb 项目的 src/main/resources 中创建了(在 maven 中):

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

但是,Spring 不使用 log4j 进行日志记录。我在调试文件中看不到 springframework 日志,但我可以在控制台中看到其中一些(INFO)。因此,我假设 Spring 使用的 apache commons 日志记录不是使用 log4j 进行的。

是否可以(以及如何)将 Spring 使用的日志记录重定向到 WebSphere 下的 Log4j 引擎?

共享库中提供的 WebSphere 7.0、Spring 3.1.2、log4j 1.2.6、commons-logging 1.1。

4

2 回答 2

1

这种将 JCL(包括 Spring)日志路由到 log4j 配置的技术仍然有效。

对于我们已经拥有 slf4j 的应用程序(Spring WebFlow 的应用程序),也可以将其路由到您的 log4j 配置

但是,如果您只想查看 Spring 日志信息,您可以通过控制台的Troubleshooting> Logs and Trace> server-name >将其日志级别提高到 WebSphere 自己的日志(SystemOut.log) Change log level details

添加类似的: org.springframework.ejb.access.*=fine内容(冒号是分隔符)。

我不知道确切的 WAS 级别对应于什么,但是fine,如果您展开“组件和组”区域以查看可用的内容,则finer、 和会列在“跟踪”级别下。finest

(顺便说一句,我认为您的特定 Spring 包没有在下面列出并不重要。我相信它仍然应该成功地控制您的日志记录。)

于 2013-11-13T05:33:15.153 回答
1

尝试以下操作:

  1. 考虑使用 slf4j 进行日志记录。将 log4j 添加到 maven 中的依赖项。
  2. 将 jcl-over-slf4j 添加到您的 maven 依赖项中。这会将每个请求从 jcl 重定向到 slf4j。
  3. 在 Maven 依赖项中搜索依赖项 commons-logging。排除它,这样它就不会进入您的部署档案。
  4. 删除“commons-logging.properties”文件。

我希望现在一切顺利。

于 2013-11-11T14:01:56.350 回答