Logging from Spring using Log4j under WebSphere

偶尔善良 提交于 2019-12-11 05:05:28

问题


I'm using log4j in my WebSphere application. I need to debug class org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor, so I've created logger in my log4j.xml file:

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

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

I've created also commons-logging.properties in src/main/resources of the web project (in maven):

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

However, Spring is NOT logging using log4j. I see no springframework logs in my debug file, but I can see some of them (INFO) in the console. Therefore I assume, the apache commons logging used by Spring is NOT logging using log4j.

Is it possible (and how) to redirect logging used by Spring to Log4j engine under WebSphere?

WebSphere 7.0, Spring 3.1.2, log4j 1.2.6, commons-logging 1.1 provided in shared library.


回答1:


Try the following:

  1. Consider using slf4j for your logging. Add log4j to your dependencies in maven.
  2. Add jcl-over-slf4j to your maven dependencies. This redirectes each request from jcl to slf4j.
  3. Search for the dependency commons-logging inside your maven dependencies. Exclude it, so it does not get to your deployment archive.
  4. Delete the "commons-logging.properties"-file.

I hope that everythings works out fine now.




回答2:


This technique to route JCL (including Spring) logging to your log4j configuration still works.

For the apps where we also have slf4j already (the Spring WebFlow ones), that can also be routed to your log4j configuration.

However, if you just want to see the Spring log information, you can increase its level of logging to WebSphere's own logs (SystemOut.log) via the console's Troubleshooting > Logs and Trace > server-name > Change log level details.

Add something like : org.springframework.ejb.access.*=fine (colon is the separator).

I don't know what the exact WAS levels correspond to, but fine, finer, and finest are listed under the "Trace" levels if you expand the Components and Groups area just to see what is available.

(I don't think it matters that your particular Spring package is not listed under there, BTW. I believe it should still successfully control your logging.)



来源:https://stackoverflow.com/questions/19907711/logging-from-spring-using-log4j-under-websphere

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!