java - Log4j - RollingRandomAccessFile 中的无效元素或属性

标签 java log4j

我是 Log4J(和一般的 Java)的新手。我正在尝试将一些日志输出到 logstash。我遇到了 logstash 的内置 log4j 输入类型的一些问题。出于这个原因,我想使用 json_event layout方法。虽然我相信我已正确设置所有内容,但当我启动我的应用程序时出现错误:

ERROR: RollingRandomAccessFile contains an invalid element or attribute "layout".

我不明白为什么会收到此消息,或如何解决此问题。我对以 json_event 格式获取日志比其他任何东西都更感兴趣。目前,我的 log4j2.xml 文件如下所示:

<Configuration status="WARN" monitorInterval="30">
  <Appenders>
    <RollingRandomAccessFile name="RollingFile" fileName="/logs/recent.log"
      filePattern="/logs/$${date:yyyy-MM}/server-%d{yyyy-MM-dd-HH}-%i.log.gz">
      <layout class="net.logstash.log4j.JSONEventLayoutV1" />
      <Policies>
        <TimeBasedTriggeringPolicy interval="4" modulate="true"/>
        <SizeBasedTriggeringPolicy size="100 MB"/>
      </Policies>
    </RollingRandomAccessFile>
    <Async name="AsyncFile">
      <AppenderRef ref="RollingFile"/>
    </Async>
  </Appenders>
  <Loggers>
    <Logger name="com.myApp" level="trace" additivity="false">
      <AppenderRef ref="AsyncFile"/>
    </Logger>
    <Root level="trace">
      <AppenderRef ref="AsyncFile"/>
    </Root>
  </Loggers>
</Configuration>

为了启动我的应用程序,我在命令行运行以下命令:

java -Dlog4j.configurationFile=log4j2.xml -cp "/home/ubuntu/jsonevent-layout-1.6.jar" -Xms256m -Xmx1024m -jar myApp.jar

我已确认 jsonevent-layout-1.6.jar 的路径是正确的。如果我删除新布局,我的应用程序会成功登录。所以,我知道 log4j 运行正常。我知道我的应用程序运行良好。此问题与使用 json_event 布局无关。有人可以帮我解决这个问题吗?我完全不知道自己做错了什么。

谢谢

最佳答案

来自 github.com/logstash/log4j-jsonevent-layout 的 net.logstash.log4j.JSONEventLayoutV1 不适用于 Log4J2。您会在 github.com/maartenbosteels/log4j-jsonevent-layout 找到一个与 Log4J2 兼容的分支。不幸的是,它不在 Maven 中心。所以你必须解决这个问题。但是,一旦您拥有它,您的 log4j2.xml 将看起来像这样。

<RollingRandomAccessFile name="RollingFile" fileName="/logs/recent.log"
   filePattern="/logs/$${date:yyyy-MM}/server-%d{yyyy-MM-dd-HH}-%i.log.gz">
   <JSONEventLayoutV1>
   <Policies>
     <TimeBasedTriggeringPolicy interval="4" modulate="true"/>
     <SizeBasedTriggeringPolicy size="100 MB"/>
   </Policies>
</RollingRandomAccessFile>

关于java - Log4j - RollingRandomAccessFile 中的无效元素或属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22975527/

相关文章:

java - 如果我们将它与 slf4j api 一起使用,我们是否可以使用 log4j2 的所有功能?

java - Log4j 为每个附加程序设置不同的日志记录级别

java - tomcat 日志存储在一个单独的文件中

java - 自定义 Spring :form to render different value and tag content

java - Java中如何高效地将二进制字符串转换为二进制字节数组?

java - 无法编译 JSP : x cannot be resolved to a type 的类

java - 如何获取日志文件中的 hibernate 日志

java - 为什么我会得到一个类转换异常?

java - java.util.Date 的 setHours() 的替代方法?

java - 如何使用 log4j.properties 使日志文件根据大小旋转并压缩