对于所有的基于文件的appender和基于socket的appender,log4j提供通知appender 配置的详细信息的功能。例如,基于文件的appender,文件地址和格式化输出日志信息都包含在了log4j的通知里面。Chainsaw和其他外部系统能发现这些通知并聪明地利用这些通知去处理日志文件。
这种通知暴露的机制和通知格式是特定于每个通知者实现的,一个与特定通知者实现协作的外部系统必须明白,如何定位通知的配置和通知的格式。例如,一个数据库通知者可能在数据库表中存储了配置的详细信息,一个外部系统可以读取这个数据库表,发现文件位置和格式。
log4j提供了一种通知者实现——一个“multicastdns”通知者,运用http://jmdns.sourceforge.net的库通过ip多路传送,它可以通知appender的 配置的详细信息。Chainsaw能发现log4j的多路局域网产生的通知者并且在Chainsaw的zeroconf标签中显示(jmdns库要在Chainsaw的路径中)。在Chainsaw的zeroconf标签中双击通知入口,通知者就可以解析和跟踪日志文件了。现在Chainsaw只支持FileAppender 的通知。
- 你可以在 http://jmdns.sourceforge.net 网站上找到JmDns库,把它加到应用路径中
- 在配置文件中设置advertise的配置属性为”multicastdns”
- 设置appender的advertise属性为true
- 如果通知FileAppender-based 的配置,要设置appender的属性”advertiseURI”为一个合适的 URI
基于FileAppender的配置需要额外的指定在appender的 ‘advertiseURI’ 属性。advertiseURI’ 属性给Chainsaw提供了怎样访问文件的信息。例如,通过制定 的Commons VFS (http://commons.apache.org/proper/commons-vfs/) sftp:// URI 的ssh/sftp, 一个文件可能被chainsaw远程访问,当通过web服务器访问文件时,一个http:// URI 可能会被用到,或者用本地运行的Chainsaw实例访问一个文件时,制定一个 file:// URI 。
请注意,为了用”multicastdns”来通知,你必须在你的应用路径加上Jmdns的库(你可以在http://jmdns.sourceforge.net找到)
- <?xml version=“1.0” encoding=“UTF-8”?>
- <Configuration advertiser=“multicastdns”>
- …
- </Configuration>
- <Appenders>
- <File name=“File1” fileName=“output.log” bufferedIO=“false” advertiseURI=“file://path/to/output.log” advertise=“true”>
- …
- </File>
- </Appenders>
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/113874.html