Tomcat Log4j SyslogAppender未尝试连接

Tomcat Log4j SyslogAppender未尝试连接,tomcat,log4j,Tomcat,Log4j,我有一个应用程序,它使用log4j来编写日志文件。我没有访问源代码的权限,但我可以假设,如果我在log4j.xml文件中创建一个appender,它应该使用该appender,而不需要更改代码 目前,我可以确认没有数据包通过wireshark从系统生成到远程syslog服务器。我可以远程登录到端口514上的远程系统日志服务器,并在没有问题的情况下写入消息。我可以假设我的XML有问题,但是我没有消息告诉我错误是什么 以下是附录: <appender name="SYSLOG" class="

我有一个应用程序,它使用log4j来编写日志文件。我没有访问源代码的权限,但我可以假设,如果我在log4j.xml文件中创建一个appender,它应该使用该appender,而不需要更改代码

目前,我可以确认没有数据包通过wireshark从系统生成到远程syslog服务器。我可以远程登录到端口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>

我还尝试了log4j2语法

<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>

如果我将
更改为默认的每月打印卷,则它将打印到日志文件中


编辑:仍然有问题,但我会补充一些关于我的问题的更多信息

1:如果我将默认的
PRINTING\u MONTHLY\u ROLL
重命名为
SYSLOG
,则消息将正确输出到日志文件

2:如果我给记录器一个假名称,那么我会在系统日志中看到log4j init错误消息

3:如果我给syslog appender一个不正确的主机参数,它将给我一个错误,主机找不到,日志记录将失败。由于我在保存原始问题中列出的配置后没有收到此消息,因此我只能假设语法没有错误


4:两边的防火墙都不是问题。我可以与telnet建立连接,并且我确认端口TCP:514在正确的方向上允许在两侧使用。

我遇到了相同的行为,Syslog appender不会尝试连接,如果我多次停止并重新启动应用程序,它会正确记录,但大多数情况下不会,所以我认为这是Syslog appender中的一个bug

---更新---

在我的例子中,我刚刚发现问题在于DNS解析,请尝试在您的rsyslogd配置中禁用来自远程主机的消息的DNS解析,在ubuntu的arm设备上,我在/etc/default/rsyslog中找到了该选项

# Options for rsyslogd
# -x disables DNS lookups for remote messages
# See rsyslogd(8) for more details
RSYSLOGD_OPTIONS="-x"

您是否尝试了一个简单的文件日志或控制台日志附加程序来查看您的配置更改是否适用?是。将应用这些更改。