Java 使用WebLogic和Log4j交织事件
我在Struts应用程序中使用WebLogic和Log4j。由于Action类不是线程安全的,所以我假设Action类由WebLogic缓存,并用于每个HTTP请求 在这种情况下,如果有多个客户端访问同一个Action类,我假设Log4j打印的事件将通过多个请求输出 日志信息不是连续的,很难解释Java 使用WebLogic和Log4j交织事件,java,log4j,weblogic,Java,Log4j,Weblogic,我在Struts应用程序中使用WebLogic和Log4j。由于Action类不是线程安全的,所以我假设Action类由WebLogic缓存,并用于每个HTTP请求 在这种情况下,如果有多个客户端访问同一个Action类,我假设Log4j打印的事件将通过多个请求输出 日志信息不是连续的,很难解释 我如何解决这些问题?首先,我想修正一下您问题中的一些术语用法。Struts是一个MVC框架。Weblogic是一个JavaEE容器。操作功能和生命周期不依赖于容器。这只是Struts的功能 您是对的,因
我如何解决这些问题?首先,我想修正一下您问题中的一些术语用法。Struts是一个MVC框架。Weblogic是一个JavaEE容器。
操作
功能和生命周期不依赖于容器。这只是Struts的功能
您是对的,因为操作的实例是根据请求创建的,所以您的日志将包含由不同操作创建的混合日志消息
通常使用的解决方案是将线程名称打印到日志中(log4j支持此配置),然后在unix上使用grep
命令或在windows上使用find
仅过滤相关消息
下面是导致log4j打印线程名称的布局
配置示例:
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="%-5p %-23d{ISO8601}{GMT} [%t] %x: %c{1}(%C{1}.%M:%L) - %m%n"/>
</layout>
[%t]
完成这项工作。还有其他更有效的多线程日志记录方法吗?