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

Log4j2-异步记录器滚动文件追加器未每天每小时滚动

蒯华彩
2023-03-14

这是我的log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="OFF">

    <Appenders>
            <!-- Generate STDOUT in console -->
            <Console name="CONSOLE" target="SYSTEM_OUT">
                    <PatternLayout pattern="%d %-5p [%t] %C{2} (%F:%L) - %m%n" />
            </Console>

            <!-- Generate rolling log for router with per hour interval policy -->
            <RollingFile name="RouterRollingFile" fileName="/apps/bea/mb-logs/router.log"
                     immediateFlush="false" filePattern="/apps/bea/mb-logs/router.%d{yyyy-MM-dd-HH}-%i.log">
                    <PatternLayout>
                            <pattern>%d{yyyy-MM-dd HH:mm:ss} %5p [%t] (%F:%L) - %m%n</pattern>
                    </PatternLayout>
                    <Policies>
                            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                    </Policies>
                    <!-- <DefaultRolloverStrategy fileIndex="max" max="24" /> -->
            </RollingFile>
    </Appenders>

    <Loggers>
            <AsyncLogger name="com.tritronik.mb.router" level="info"
                    additivity="false" includeLocation="true">
                    <AppenderRef ref="RouterRollingFile" />
            </AsyncLogger>
            <!-- <Root level="info">
                    <appender-ref ref="CONSOLE" />
            </Root> -->
    </Loggers>

我想实现每小时滚动的每日滚动文件,到目前为止,我还没有能够产生适当格式的日志,正如我所记得的,间隔参数似乎是按天而不是按小时递增。

我想实现这一点:

路由器。日志--

路由器。日志2014-06-20-00

路由器。日志2014-06-20-01

...

路由器。日志2014-06-20-23

路由器。日志2014-06-21-00

...

相反,我做到了这一点:

router.log

路由器。日志2014-06-20-1 --

我已经能够使用通常的log4j来做到这一点,但是iOS性能下降,迫使我使用log4j2,但是我偶然遇到了这个问题。

我哪里做错了?或者log4j2还不支持这一点,这是真的吗?

谢谢你

共有1个答案

金亦
2023-03-14

您可能发现了一个bug。

这是只发生在异步记录器还是配置普通(同步)记录器时?

另外,您是否尝试过使用如下文件模式:filePattern=“/apps/bea/mb logs/$${date:yyyy-MM-dd}/router.%d{yyyy-MM-dd-HH}.log”?我怀疑$${date:…}部分可能是相关的。

如果以上两者都没有任何区别,你能在log4j2问题跟踪器上提交一张Jira票吗?https://issues.apache.org/jira/browse/LOG4J2

 类似资料:
  • 我最近升级了我的应用程序以使用log4j2。我正在尝试利用它的异步记录器特性。然而,看起来它并没有创建一个。根据Log4j异步配置,它说, 要使所有记录器都是异步的,请将中断器jar添加到类路径中,并将系统属性Log4jContextSelector设置为org.apache.logging.log4j.core.async.AsyncloggerContextSelector。我还设置了log4

  • 据我所知,log4j2中的RollingFileAppender不会在指定的时间(比方说-在一小时结束时)回滚,而是在超过时间阈值后到达的第一个日志事件时回滚。 有没有一种方法可以触发一个事件,一方面会导致文件滚动,另一方面不会附加到日志中(或者会附加一些无关紧要的东西,比如空字符串)?

  • 我在研究这个问题时发现的几乎所有内容都是针对Log4J1.x的,并讨论了一个似乎在2.0中不存在的datePattern参数。 下面是我的log4j2.xml文件: 我正在将信息和以上内容写入日志文件,并将调试写入控制台(目前)。这些文件被写得很好,但它们似乎每天都在滚动(这似乎是默认的)。

  • 我的log4j2属性文件如下所示- 当我试图使用以下代码访问appender时 它将条目记录在SeriesIn响应appender中,而不是ejdk appender中。我的log4j2有多个自定义appender。我需要在不同的类文件中使用不同的appender,它应该将条目记录在正确的文件中。

  • 我正在尝试通过代码添加一个自定义的附加器,该附加器应该记录一些包。所有的工作都使用以下代码: 所以简而言之..正如您所看到的,如果之前没有定义追加器,我正在创建一个追加器。然后我为org.test创建一个记录器(如果没有添加的话),并将appender添加到这个记录器中。 多谢了。

  • 有办法得到滚动文件名吗?我写了自定义插件,信号文件滚动,但我需要得到滚动文件的文件名。我的插件从java代码发出信号: 自定义插件: