【问题标题】:Why are my log4j2 rolling logs including previous days' log entries?为什么我的 log4j2 滚动日志包括前几天的日志条目?
【发布时间】:2016-06-01 14:03:48
【问题描述】:

我将 log4j 2.5 用于 Tomcat Web 应用程序日志记录。有两个应用程序服务器都写入网络路径上的同一个日志文件。

我的日志文件越来越大,因为每一天的日志文件都包含前几天的所有条目。

例如,myLog-2016-06-01.log 包含从 5-20(实施日)到 06-01 的所有日志记录,而 myLog-05-31 包含从 5-20 到 5- 的所有日志31,以此类推……

我假设我对 XML 配置文件的工作方式有些不理解。

来自 log4j2.xml 的相关信息如下所示:

<?xml version="1.0" encoding="UTF-8"?>  
<Configuration status="trace">  
<Appenders>  
    <RollingRandomAccessFile name="RollingFileLogger" 
                             fileName="[...]\myLog.log" 
                             filePattern="[...]\myLog-%d{yyyy-MM-dd}.log">
        <PatternLayout pattern="%n %n %d ${hostName} %p %c: %msg"/>  
        <Policies>
            <TimeBasedTriggeringPolicy/>
        </Policies>
        <DefaultRolloverStrategy max="10"/>
    </RollingRandomAccessFile>
    <Console name="ConsoleLogger" target="SYSTEM_OUT"> 
        <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>
</Appenders>  
<Loggers>  
    <Root level="trace">  
        <AppenderRef ref="RollingFileLogger"/>
        <AppenderRef ref="ConsoleLogger"/>  
    </Root>  
</Loggers>  

【问题讨论】:

  • “有两个应用程序服务器都写入网络路径上的同一个日志文件” - 这可能是问题所在。您需要使用一些特殊的 appender 将多个应用程序同时写入一个日志,例如 SocketAppenderSyslogAppender
  • 我会调查这些,谢谢。我还将尝试单独的文件(而不是在本地文件系统上),以确认这是我唯一的问题。
  • 这就是问题所在。那么,我将尝试设置一个 SocketAppender。

标签: java tomcat logging log4j2


【解决方案1】:

根据Roman 的评论,答案是使用SocketAppender 和随附的套接字服务器将来自所有Web 应用程序的所有记录器调用汇集到一个附加程序中。现在完美运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 2020-11-10
    • 2019-03-17
    • 1970-01-01
    相关资源
    最近更新 更多