0

我们正在使用创建一个记录器实例

private static Logger = Logger.getClass("ClassName.class");

每个动作类都有一个记录器。这在我们的测试环境中运行良好。但是,它在生产环境中的 WAS 7 中偶尔会出现线程挂起。根据 IBM 服务器分析师的说法,日志文件在等待数据库更新时被锁定。

以下是我在 log4j.xml 中的内容。

   <appender name="logger1" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File" value="/logs1/logFile.log" />
            <param name="DatePattern" value="'.'yyyy-MM-dd" />
            <param name="Threshold" value="DEBUG" />
            <param name="Append" value="true" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t] %-5p (%F:%L) - %m%n" />
            </layout>
    </appender>

有人可以帮忙吗?如果我删除 static 有什么好处吗?如果我使用 SL4j LoggerFactory 来获取 logger 有什么好处吗?

编辑:相关点:log4j.xml 在 2 个应用程序之间共享。应用程序是 1 个 EAR 文件中的 2 个 WAR 文件。log4j.xml 有 2 个附加程序。每个应用程序都会删除代码中的其他附加程序。

4

1 回答 1

0

如果我删除 static 有什么好处吗?

Logger.getClass,仍然会返回相同的实例。因此,这不会改变与锁定 log4j 相关的任何内容。

如果我使用 SL4j LoggerFactory 来获取 logger 有什么好处吗?

不(至少不是你面临的问题)。锁定在 log4j 中完成。SLF4J 只是一个外观,仍然会委托给 log4j(除非你用别的东西替换 log4j)。

于 2012-09-15T07:21:29.763 回答