我有一个使用log4j写入日志文件的应用程序。我没有访问源代码,但我可以假设,如果我在log4j.xml文件中创建appender,它应该使用该appender而不需要更改代码。Log4j SyslogAppender未尝试连接
目前我可以确认没有数据包正在通过wireshark从系统生成到远程系统日志服务器。我可以通过端口514远程登录到远程系统日志服务器,并写入消息时没有问题。我可以认为我的XML有些不正确,但我没有消息告诉我错误是什么。
这里的追加程序:
<appender name="SYSLOG" class="org.apache.log4j.net.SyslogAppender">
<param name="Facility" value="USER" />
<param name="syslogHost" value="172.16.81.39:514" />
<param name="Threshold" value="INFO" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy/MM/dd HH:mm:ss.SSS}][%5p](%t) %m%n" />
</layout>
</appender>
我也曾尝试Log4j的2语法
<appender name="syslog" class="org.apache.log4j.net.SyslogAppender">
<param name="format" value="bsd" />
<param name="host" value="172.16.81.39" />
<param name="port" value="514" />
<param name="protocol" value="TCP" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy/MM/dd HH:mm:ss.SSS}][%5p](%t) %m%n" />
</layout>
</appender>
这里有相应的记录器:
<logger name="printing.com.application" additivity="false">
<level value="INFO" />
<appender-ref ref="SYSLOG" />
</logger>
如果我改变<appender-ref />
为默认PRINTING_MONTHLY_ROLL然后它将打印到日志文件。
编辑:仍然遭到拒绝,但我会在我的问题
1添加一些更多的信息:如果我默认命名PRINTING_MONTHLY_ROLL
到SYSLOG
则消息是正确输出到日志文件
2:如果我给logger一个虚假的名字,那么我在系统日志中看到log4j初始化错误消息
3:如果我给系统日志appender一个不正确的主机参数,它会给我一个错误,找到了d记录将失败。由于在保存我的原始问题中列出的配置后,我没有收到此消息,因此我只能假定语法没有错误。
4:任何一方的防火墙都不是问题。我可以与telnet建立连接,并且我确认端口TCP:514可以在正确的方向上被允许。
您是否尝试过简单的文件日志或控制台日志appender以查看您的配置更改是否适用? –
是的。这些更改已应用。 – Tim