当前位置: 首页 > 知识库问答 >
问题:

带有路由附加器的Log4J2不存档文件

邵星光
2023-03-14

我正在尝试将log4j2文件的路由添加到包含其进程id的名称的文件中。这将使用路由并指定一些代码来插入进程id的查找。但是,这些文件似乎不再正确存档-每次我启动进程时,都会正确生成具有进程id的新文件,然而,任何东西都不会被放入归档目录中。

此外,即使我不使用路由,但我也无法想出如何在存档中最多保留5个文件,而只是使用OnstartupTriggeringPolicy滚动文件追加器。

<Routing name="Routing">
    <Routes pattern="$${process:Id}">
        <Route>
            <RollingFile name="logFile"
                fileName="${LOG_DIR}/erdaemon-${process:Id}.log" 
                filePattern="${ARCHIVE}/erdaemon.%d{yyyy-MM-dd-hh-mm}.log">
                <PatternLayout pattern="${PATTERN}" />
                <Policies>
                    <OnStartupTriggeringPolicy />
                </Policies>
            </RollingFile>

        </Route>
    </Routes>
</Routing>
<Async name="async" bufferSize="1000" includeLocation="true">
    <AppenderRef ref="Routing" />
</Async>
</Appenders>
<Loggers>
    <Root level="INFO">
        <AppenderRef ref="async"/>
    </Root>
    <Logger name="testlogger" level="TRACE" additivity="false">
        <AppenderRef ref="async"/>
    </Logger>

共有1个答案

居京
2023-03-14

OnStartupTriggeringPolicy本身无法触发“滚动”,除非新进程恰好具有与前一进程相同的进程id。否则,它将导致使用新名称创建一个新文件,甚至不知道以前执行的文件是否存在。

我建议您为log4j2创建一个Jira问题,以创建一个操作来实现这一点。

至于最多保留5个文件,版本2.5中的删除操作可以做到这一点,但前提是存在滚动,而您的配置永远不会真正执行滚动。

此外,我看不出有什么特别好的理由让您在配置中使用路由附加器。因为一个进程只能有一个id,所以您永远不会有超过一个RollingFileAppender。

 类似资料:
  • 我需要一些关于log4j2配置的帮助。当我调试记录器时,它看起来像是关闭了所有的附加程序,然后我从来没有收到任何应用程序日志。幸运的是,我知道log4j至少是找到属性文件,并给记录器初始化调试输出。 这是我的日志4J2。属性文件: 以下是记录器调试初始化输出: 感谢任何帮助!我需要它。 我真的很想让异步appender在某个时候工作,但是很难通过log4j2找到示例。log4j2的属性语法 还有-

  • 我刚开始使用log4j2 我正在尝试配置xml,以便使用和附加符将日志发送到日志文件中。这个附加器工作得很好。我想使用appender,这样它就可以每天清除日志文件,但是当它第一次创建日志文件时,它没有将任何日志消息写入创建的文件中,所以我来这里是为了得到一些建议

  • 我有点小问题,找不到解决办法。我想为级别信息而不是级别警告设置图案布局。如果我有一个级别信息的日志,一切都正常,但是如果日志是级别,它会被写入控制台两次(作为级别信息和作为级别警告)。只需将特定级别的所有日志写入该级别和以下级别的us日志即可。 我想将级别信息写入控制台,如:和级别如。

  • 我创建了一个自定义追加器,但在运行测试时没有调用它。以下是这些属性的外观: 我的appender被称为WindowsEventLogappender。知道我的档案有什么问题吗?我看到了控制台测试消息,但没有看到来自我的appender的消息。现在我只是在我的自定义追加器中做一个system.out.println来验证它是否被调用。

  • 我正在使用lombok的log4j2记录器,需要基于ThreadContext映射配置路由附加器。路由键由脚本确定。这是整个log4j2。xml配置文件: 但是,我得到以下错误: Log4j2留档给了我们一个类似的脚本示例,它不适用于我的以太。我对JS相当陌生,但此代码似乎是一个有效的脚本。我是不是做错了什么? 提前谢谢。

  • 问题内容: 当我向路由添加错误的段时,我遇到了ui-router的问题。 一个例子… http://xxx.xxxxx.xxx/roles可以正常工作。这是没有参数定义的路由。但是,如果我在浏览器http://xxx.xxxxx.xxx/roles/kk中添加了另一个细分,则$ urlRouteProvider.otherwise(’/’)不起作用,并且该应用程序正在尝试加载所有网络资源(css,