操作系统:Linux Weblogic:10.3.6.0 JDK:1.7.0_55
最近我们已经从log4j 1.x迁移到2.6.1 我看到记录器与主日志文件一起写入滚动文件。 给定的限制大小(50MB)也会减少文件大小。 这主要是因为我正在推动400k记录的负载。 PFA log4j xml。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG" >
<Properties>
<Property name="theHostName">${hostName}</Property>
</Properties>
<!-- bufferedIO=true by default, bufferSize=8192bytes
-->
<Appenders>
<RollingFile name="FILE" filename="${sys:weblogic.Name}.log" filepattern="${sys:weblogic.Name}.log.%i" append="false" >
<PatternLayout pattern="[%-5p][%d{yyyy-MM-dd HH:mm:ss,SSS}][${sys:weblogic.Name}:${hostName}][%t][%X{MessageInfo}][%c{1}:%M:%L][%msg]%n" />
<Policies>
<SizeBasedTriggeringPolicy size="50 MB" />
</Policies>
<DefaultRolloverStrategy min="1" max="100" fileIndex="min"/>
</RollingFile>
</Appenders>
<Loggers>
<Logger level="DEBUG" includeLocation="true">
<AppenderRef ref="FILE"/>
</Logger>
<Root level="INFO" includeLocation="true">
<AppenderRef ref="FILE"/>
</Root>
<!-- Package specific log level defines -->
<logger name="org.springframework">
<level value="WARN" />
</logger>
<logger name="org.jboss">
<level value="WARN" />
</logger>
<logger name="org.hibernate">
<level value="OFF" />
</logger>
<logger name="com.company.project.eligibility">
<level value="WARN" />
</logger>
</Loggers>
</Configuration>
请建议。
答案 0 :(得分:3)
如果有多个应用程序写入同一文件,则需要特别注意Log4j2(这与Log4j 1.x不同)。
为了从多个应用程序成功登录到同一文件,这些应用程序需要共享相同的LoggerContext。您可以通过将log4j2 jar文件放在weblogic共享库中来实现此目的,以便Log4j2类由同一个类加载器加载。
如果log4j2 jar被捆绑在WAR或EAR存档中,则log4j2类将由单独的应用程序类加载器加载,并且它们将以单独的LoggerContext结束。如果多个应用程序具有单独的LoggerContext,则它们彼此不知道可能会在文件翻转时产生奇怪的结果。
相关文档:Logging Separation和Web Applications and JSPs。 (您的应用程序可能不是Web应用程序,但如果它在Weblogic中运行,则适用相同的原则。)