log4j2在当前日志文件中附加当前日志的几个条目

时间:2015-11-02 05:46:20

标签: java log4j log4j2

这是我的方案:    对于我的网站,我使用 log4j2 来滚动日志文件。目前我正在生成3个日志文件,其中包含2个滚动文件(trace& error)和1个路由追加器。

1)整个日期的跟踪日志(滚动文件追加器)

2)整个日期的错误日志(滚动文件追加器)

3)记录整天的用户活动日志(路由文件追加器)

以下是我的 log4j2.xml ,用于上述方案,完全符合要求。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Configuration status="WARN" name="mywebsite" monitorInterval="30">
    <Appenders>

        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout
                pattern="[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%logger{1}] - %msg%n" />
        </Console>

        <RollingFile name="error-log" append="true"
            fileName="D:/client/error [${date:yyyy-MM-dd}].log" filePattern="D:/lient/error-%d{yyyy-MM-dd}.log">
            <PatternLayout
                pattern="[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%logger{1}] - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                <SizeBasedTriggeringPolicy size="250 MB" />
            </Policies>
        </RollingFile>

        <RollingFile name="trace-log" append="true"
            fileName="D:/client/trace [${date:yyyy-MM-dd}].log" filePattern="D:/client/trace-%d{yyyy-MM-dd}.log">
            <PatternLayout
                pattern="[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%logger{1}] - %msg%n" />
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                <SizeBasedTriggeringPolicy size="250 MB" />
            </Policies>
        </RollingFile>

        <Routing name="RoutingAppender">
            <Routes pattern="$${ctx:logFileName}">
                <Route>
                    <RollingFile name="Rolling-${ctx:logFileName}" append="true"
                        fileName="D:/userlog/${ctx:logFileName}~${date:yyyy-MM-dd}.log"
                        filePattern="D:/userlog/${date:yyyy-MM}/%d{yyyy-MM-dd}-%i.log.gz">
                        <PatternLayout
                            pattern="[%-5level] [%d{yyyy-MM-dd HH:mm:ss.SSS}] [%logger{1}] - %msg%n" />
                        <Policies>
                            <TimeBasedTriggeringPolicy interval="1" modulate="true" />
                            <SizeBasedTriggeringPolicy size="512 MB" />
                        </Policies>
                    </RollingFile>
                </Route>
                <Route ref="Console" key="${ctx:logFileName}" />
            </Routes>
        </Routing>

    </Appenders>

    <Loggers>
        <Root level="trace" additivity="false">
            <Appender-Ref ref="Console"/> 
            <Appender-Ref ref="trace-log" level="trace" />
            <Appender-Ref ref="error-log" level="error" />
            <Appender-Ref ref="RoutingAppender" />
        </Root>
    </Loggers>
</Configuration>

我是log4j的新手,我以某种方式设法从互联网上的来源配置log4j xml。  滚动文件是为每天创建的,并为每个用户创建文件追加器,并在相应的文件中捕获整个日期的相应事件,直到第二天推出新文件。

问题是:

当新文件滚动时,在前一天的日志文件中添加了当天的几个事件。

例如,11月1日的 trace.log 文件中包含11月2日的几个日志事件(比如大约5-10行)。

这也适用于文件追加器。

例如,文件追加器将根据用户日志生成日志文件,例如昨天创建的名为 john-01-112015.log 的日志文件。并且在11月2日相同的用户日志将根据配置推出新文件。但是,如上一个场景中所述, john-01-112015.log 中添加了11月2日的少量日志。

log4j2.xml有什么问题吗?伙计们帮助我解决这个问题。

0 个答案:

没有答案