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

Zug*_*dud 10 java syslog logback

我使用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>
Run Code Online (Sandbox Code Playgroud)

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

# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢你的任何想法

Tro*_*vis 27

当然.按顺序松散,尝试以下4个测试:

1.测试logback:显而易见的一个:添加FileAppender作为第二个appender并确保事件出现在那里.你的帖子暗示"它"在开发中工作,但我不确定它是否是logback或appender,并且配置片段没有appender-ref要发送事件的部分SYSLOG.

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

2.确认正在生成消息:假设FileAppender接收消息但syslog没有,请运行:

tcpdump -n -i lo -X -s 1500

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

3.确认rsyslog绑定到端口514:

lsof -i :514

或者如果你没有lsof并且确定另一个进程没有绑定到514:

netstat -ln | grep 514
Run Code Online (Sandbox Code Playgroud)

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

/etc/init.d/rsyslog stop
rsyslogd -d
Run Code Online (Sandbox Code Playgroud)

你应该看到到达的事件.如果没有人发现问题,那就远远不够了.我已经在已知良好的J2EE和syslog环境中获得了有效的logback配置.但希望上面的一件事能做到.