尝试使用logback syslog appender调试问题而不更新syslog

时间:2012-04-15 11:55:56

标签: java logback syslog

我使用logback来更新syslog,这就是我配置我的appender的方式:

<appender name="SYSLOG" class="ch.qos.logback.classic.net.SyslogAppender">
        <syslogHost>localhost</syslogHost>
        <facility>LOCAL0</facility>
        <suffixPattern>[%thread] %logger %msg</suffixPattern>
    </appender>

我更新了rsyslog.conf以侦听UDP事件,取消注释以下行:

# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514

在conf更改后重新启动syslog守护程序。

在我的所有测试盒上,它似乎工作得很好!但是,系统syslog上的一个没有被我的进程更新(其他东西正在更新它就好了),我想知道如何调试这个问题?想到的任何事情都会浮现在脑海中?

感谢您的任何想法

1 个答案:

答案 0 :(得分:27)

不确定。顺序松散,尝试这4个测试:

<强> 1。测试logback :显而易见的一个:添加FileAppender作为第二个appender并确保事件出现在那里。您的帖子暗示“它”在dev中有效,但我不确定它是否是logback或appender,并且配置代码段没有appender-ref部分将事件发送到SYSLOG

如果您的FileAppender什么都没有收到,那就是应用程序/环境问题,或者此服务器没有生成提供给appender的事件。

<强> 2。正在生成确认消息:假设FileAppender收到消息但syslog没有,请运行:

tcpdump -n -i lo -X -s 1500

..在lo上输出UDP数据包的完整有效负载。让您的应用生成日志消息。您应该看到至少1个发往127.0.0.1:514的数据包。如果你不这样做,那就是发件人。如果你这样做,那就是rsyslog配置。

第3。确认rsyslog已绑定到端口514

lsof -i :514

或者如果您没有lsof并且确定其他进程未绑定到514:

netstat -ln | grep 514

<强> 4。查看rsyslog接收的内容:如果正在将事件发送到端口514,则在停止实时rsyslogd后,在调试模式下重新启动它并连接到终端:

/etc/init.d/rsyslog stop
rsyslogd -d

你应该看到到达的事件。如果没有人发现问题,那就远远不够了。我在已知良好的J2EE和syslog环境中有一个工作logback config。希望上面的一件事能做到这一点。