【问题标题】:Chainsaw v2 SocketReceiver not working with log4j2 SocketAppenderChainsaw v2 SocketReceiver 不适用于 log4j2 SocketAppender
【发布时间】:2014-09-23 06:48:25
【问题描述】:

我正在尝试使用来自 http://people.apache.org/~sdeboy 的 Chainsaw v2 我不想使用零配置。只是一个简单的 socketAppender/SocketReceiver 组合。

我正在使用具有以下配置的 log4j2

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" >
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <Socket name="SharathZeroConf" host="localhost" port="4445">
        </Socket>
    </Appenders>
    <Loggers>
        <Root level="debug">
            <AppenderRef ref="SharathZeroConf" />
            <AppenderRef ref="CONSOLE" />
        </Root>

    </Loggers>
</Configuration>

在 ChainSaw 上,我选择了端口 4445 的“从网络接收事件”选项。

但是电锯没有记录任何东西。

我已经使用内置的socketserver验证了log4j端的appender配置是正确的

java -cp ~/.m2/reposiry/org/apache/logging/log4j/log4j-api/2.0.2/log4j-api-2.0.2.jar  org.apache.logging.log4j.core.net.server.TcpSocketServer 4445

所以错误必须在电锯侧。任何指针@Scott?

【问题讨论】:

  • 看了下电锯的源码,看来电锯还是用log4j 1.x,对log4j2的支持非常有限。特别是,它将来自套接字的传入日志事件转换为 log4j 1.x org.apache.log4j.spi.LoggingEvent 而发送的 log4j2 事件实际上是 org.apache.logging.log4j.core.LogEvent 对象

标签: sockets log4j2 apache-chainsaw


【解决方案1】:

你是对的,我遇到了同样的问题。我只是尝试改用LogMX,它就像一个魅力:

我只需要复制 LogMX lib/ 目录中的 Log4j JAR(即 log4j-api-2.xx.jarlog4j-core-2.xx.jar

【讨论】:

  • 哇,太棒了,谢谢。我会尝试一下。我想知道 LogMX 是否明确支持 log4j2 或者它只是“偶然”工作
  • 我有一个奇怪的问题,logmx 捕获了我的应用程序日志,但没有捕获 spring 日志。我可以在控制台中看到它们。也仅供其他计划使用 logmx 的人参考,免费版本将您限制为 10,000 条日志
  • 您可能需要检查您的 Log4j 配置:用于 Spring 日志的附加程序可能与您的应用程序日志不同(即不是 Socket Appender),您可能需要检查您的 Loggers/附加程序及其additivity。 Spring 日志也可以通过 Log4j filters 为 Socket Appender 的包名过滤。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 2018-07-26
相关资源
最近更新 更多