0

我正在为我的 Struts 应用程序使用 WebLogic 和 Log4j。由于 Action 类不是线程安全的,我假设 Action 类由 WebLogic 缓存并重新用于每个 HTTP 请求。

在这种情况下,如果有多个客户端访问同一个 Action 类,我假设 Log4j 打印的事件将由多个请求输出。

日志信息不会是连续的并且很难解释。

我该如何解决这些问题?

4

1 回答 1

1

首先,我想修正您问题中的一些术语用法。Struts 是一个 MVC 框架。Weblogic 是一个 Java EE 容器。功能和生命周期Action不依赖于容器。它只是 Struts 的功能。

你是对的,因为实例Action是根据请求创建的,你的日志将包含由不同操作创建的日志消息的混合。

通常使用的解决方案是将线程名称打印到日志中(log4j 支持此配置),然后grep在 unix 或findwindows 上使用命令仅过滤相关消息。

layout这是导致 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]做这项工作。

于 2013-07-07T11:17:35.953 回答