0

我正在尝试流式传输基本的 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)所以我更新了问题以反映我现在只需要让流工作。

4

1 回答 1

1

'advertiser' 使用 log4j2 插件机制,因此您必须在配置中提供在 Advertiser 上定义的 'name' - 而不是完全限定的类名。

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

为了利用 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 添加到应用程序的类路径中)。

如果您希望始终使用此配置启动 Chainsaw(如果可用),您可以单击“自动连接”。

接下来,双击带有 appender 名称的行,Chainsaw 将开始解析和跟踪您的日志文件。

您的文件附加程序配置中提供的广告 URL 必须可以通过网络访问 Chainsaw(看起来您正在本地使用 Chainsaw 和您的文件附加程序,因此 file:/// 路径可以正常工作 - 请注意三个斜杠)。

如果每个字段周围都有分隔符 - 方括号、破折号等,只要该字符不会出现在您要分隔的字段中,Chainsaw 将工作得最好。

于 2013-05-10T15:45:43.073 回答