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

log4j2自定义布局不使用滚动附件文件

公孙和怡
2023-03-14

我正在使用log4j2和滚动appender文件。我想使用自定义布局,但它不能正常工作。

我在JBoss工作。我已将具有cusotmize布局的lib放在libs目录中,因此它位于类路径中。

在log4j2.xml,我已经把以下配置

    <Configuration status="trace" packages="mypackage.audit">
     ...
 <Routing name="RoutingAppender">
      <Routes pattern="$${ctx:FlowName">

    <Route>
          <RollingFile name="Rolling-${ctx:FlowName}" fileName="logs/Audit-${ctx:FlowName}.log"
                filePattern="./logs/Audit-${ctx:FlowName}-%d{yyyy-MM-dd}-%i.log.gz" >
                <PatternLayout>
                     <pattern>%d{ISO8601} [%t] %p %c{3} - %m%n</pattern>
                </PatternLayout>
                <Policies>
                  <TimeBasedTriggeringPolicy interval="6" modulate="true" />
                </Policies>
                <Layout type="AuditLayout" locationInfo="true"/>
         </RollingFile>
     </Route>
  </Routes>
  </Routing>

</Appenders>

<Loggers>
    <Logger name="CustomizeAuditing" level="info" >
        <AppenderRef ref="RoutingAppender"/>
    </Logger>
</Loggers>


    </Configuration>

但是没有正确记录!

提前谢谢

贾米拉

共有1个答案

尉迟宪
2023-03-14

以下工作为我:log4j2版本2.2

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration packages="com.redknee.bssauto.helpers"> 
<Appenders> 
<RollingFile name="Rolling-default" fileName="logs/bssauto.html"
   filePattern="logs/$${date:yyyy-MM}/bssauto-%d{MM-dd-yyyy}-%i.log.gz">
<CustomHTMLLayout charset="UTF-8" title="BSSAuto Logs" locationInfo="true" />
 <Policies>
      <TimeBasedTriggeringPolicy />
      <SizeBasedTriggeringPolicy size="10 MB" />
 </Policies>
</RollingFile>      
</Appenders> 
<Loggers> 
<Root level="trace"> 
  <AppenderRef ref="Rolling-default"/>
</Root> 
</Loggers> 
</Configuration>

通知如下

<Configuration packages="com.redknee.bssauto.helpers">

这里的包应该包含所有包含布局自定义类的包

<CustomHTMLLayout charset="UTF-8" title="BSSAuto Logs" locationInfo="true" />

CustomHTMLLayout是通过扩展AbstractStringLayout创建的自定义类

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

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

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

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

  • 我们使用filebeat刮取log.json文件并将其推送到elk服务器 我想在日志目录中添加一个op.json自定义json滚动日志文件。这是为了收集有关调用的操作和perf信息的信息。 基本上,我只想使用一个管理滚动文件的类。在类中,将有一个logOp函数来访问java对象,并对其进行序列化,在json输出中添加一些标准日志字段。 -------------------------------