log4j2到电锯你好世界不工作......我做错了什么?

时间:2013-05-10 03:55:45

标签: log4j2 apache-chainsaw

我正在尝试流式传输基本的hello world日志消息,以便从log4j2中显示在电锯中。我不在乎它是否使用“Zeroconf”,我只想要一些有用的东西。我知道我的测试程序正在记录消息,因为它们显示在控制台上,我知道它正在找到我的配置文件,因为我可以更改在控制台中打印的消息的格式,但这就是我所知道的。

我的配置文件(包含各种失败的猜测):

<?xml version="1.0" encoding="UTF-8"?>
<configuration advertiser="org.apache.logging.log4j.core.net.MulticastDNSAdvertiser">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"/>
    </Console>
    <File name="testFile" fileName="logs/test.log" bufferedIO="false" advertiseURI="file://localhost/home/matt/code/ade/logs/test.log" advertise="true">
      <XMLLayout />
    </File>
    <SocketAppender name="socketTest" host="localhost" immediateFlush="true" port="4560" protocol="TCP" advertiseURI="http://localhost" advertise="true">
      <XMLLayout />
    </SocketAppender>
  </appenders>
  <loggers>
    <root level="TRACE">
      <appender-ref ref="Console"/>
      <appender-ref ref="testFile"/>
      <appender-ref ref="socketTest"/>
    </root>
  </loggers>
</configuration>

我尝试了各种组合:包括类路径上的jmdns.jar,在各个点重新启动电锯,并感到沮丧,但没有任何帮助。

有什么想法吗?

编辑:我弄清楚为什么它无法读取我保存到磁盘的日志文件,(我没有使用过XMLLayout)所以我更新了问题以反映我现在只需要让流工作

1 个答案:

答案 0 :(得分:1)

'advertiser'使用log4j2插件机制,因此您必须在配置中提供广告商定义的“名称” - 而不是完全限定的类名。

log4j2广告机制目前支持FileAppenders和SocketAppenders的广告。但是,Chainsaw仅支持发现使用PatternLayout通告的log4j2 FileAppender。 XMLLayout支持将在不久的将来出现。

必须使用Chainsaw的最新开发人员快照才能利用log4j2的广告商机制。 Chainsaw tarball和DMG可在以下网址获得:http://people.apache.org/~sdeboy/

Chainsaw将发现广告中的fileappender配置并解析(如果您获得最新的Chainsaw开发人员版本,则会解析)日志文件 - 无需Chainsaw配置。

注意,您需要使用PatternLayout,并且JMDNS必须使用此appender配置位于应用程序的类路径中。

这是一个示例Log4j2 -appender-配置,它将通告fileappender配置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration advertiser="multicastdns">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"/>
        </Console>
        <File name="testFile" fileName="logs/test.log" bufferedIO="false" advertiseURI="file:///localhost/home/matt/code/ade/logs/test.log" advertise="true">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"/>
        </File>
    </appenders>
    <loggers>
        <root level="TRACE">
            <appender-ref ref="Console"/>
            <appender-ref ref="testFile"/>
        </root>
    </loggers>
</configuration>

启动正在使用appender的应用后 配置,打开Chainsaw中的'Zeroconf'标签。

你应该看到一个带有你的appender名字的行(假设你添加了 使用fileappender jmdns到app的类路径 配置)。

如果您想要始终启动Chainsaw,可以点击“Autoconnect” 如果可用,请使用此配置。

接下来,双击 在具有appender名称的行上,Chainsaw将开始解析并拖尾您的日志文件。

文件追加器中提供的广告URL 配置必须可以通过网络方式访问Chainsaw(看起来你正在工作 在本地使用Chainsaw和你的fileappender,所以file:///路径会 工作得很好 - 请注意三个斜杠。

如果每个字段周围都有分隔符 - 方括号,短划线等,只要该字符不会出现在您要分隔的字段中,链锯就能发挥最佳效果。