过滤linux命令行上的log4j2系统错误目标日志

kq4fsx7k  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(454)

我在java项目中使用log4j2,希望在linux控制台上筛选错误日志。
log4j2的配置如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <Configuration>
  3. <Properties>
  4. <Property name="pattern">[%d{yyyy-MM-dd HH:mm:ss.SSS}][%highlight{%-5level}][%t][%logger] %msg%n</Property>
  5. </Properties>
  6. <Appenders>
  7. <Console name="stdout" target="SYSTEM_OUT"> <!-- 1 -->
  8. <PatternLayout pattern="${pattern}"/>
  9. <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/> <!-- 3 -->
  10. </Console>
  11. <Console name="stderr" target="SYSTEM_ERR"> <!-- 2 -->
  12. <PatternLayout pattern="${pattern}"/>
  13. <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> <!-- 3 -->
  14. </Console>
  15. </Appenders>
  16. <Loggers>
  17. <Root level="INFO">
  18. <AppenderRef ref="stdout"/> <!-- 4 -->
  19. <AppenderRef ref="stderr"/> <!-- 4 -->
  20. </Root>
  21. </Loggers>
  22. </Configuration>

(可在此处找到:https://rmannibucau.metawerx.net/log4j2-error-log-event-on-stderr.html)
当我通过命令行运行我的程序时

  1. java -jar program.jar 2>&1 >/dev/null

在屏幕上打印stderr时,stdout被重定向到/dev/null((好的)
奇怪的是我的 LOGGER.error("...") 跟踪也被重定向到 /dev/null (这意味着它已登录linux标准输出)(nok),而在我的eclipse控制台(ok)上显示为红色(错误)。
我是否遗漏了什么,或者为什么我的log4j2 stderr记录器没有登录到linux stderr?

whitzsjs

whitzsjs1#

我的logj42.xml未包含在类路径中。这就是为什么所有日志消息都输出到linux的stdout。

相关问题