java - 尝试调试 logback syslog appender 不更新 syslog 的问题

标签 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 上的一个(其他东西正在更新它就好了),我想知道如何调试这个问题?想到什么我应该调查的吗?

感谢任何想法

最佳答案

当然。按顺序松散地尝试这 4 个测试:

<强>1。测试 logback:最明显的一个:添加 FileAppender作为第二个附加程序并确保事件出现在那里。您的帖子暗示“它”在开发中有效,但我不确定它是 logback 还是 appender,并且配置片段没有 appender-ref 部分将事件发送到 系统日志

如果您的 FileAppender 没有收到任何东西,这是一个应用程序/环境问题,或者此服务器没有生成提供给附加程序的事件。

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

tcpdump -n -i lo -X -s 1500

.. to output the full payload of UDP packets on lo. Make your app generate a log message. You should see at least 1 packet destined to 127.0.0.1:514. If you don't, it's the sender. If you do, it's the rsyslog config.

3. Confirm that rsyslog is bound to port 514:

lsof -i :514

or if you don't have lsof and are sure that another process isn't bound to 514:

netstat -ln | grep 514

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

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

您应该会看到事件到达。如果这些都没有发现问题所在,那就太离谱了。我有一个工作 logback config在已知良好的 J2EE 和系统日志环境中。不过,希望上面的事情之一能够做到这一点。

关于java - 尝试调试 logback syslog appender 不更新 syslog 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10161809/

相关文章:

java - 无法在 Mac 上安装 Glassfish。它表示指定的目录不是有效的 GlassFish 安装

java - 如何在java中获取httpResponse的一部分

java - 单声道异步异常处理

logging - 使用不带日志的 systemd

linux - 如何在 yocto 中设置系统日志?

docker - 使用Docker syslog日志记录驱动程序时仅从STDERR收集

java - 尝试插入 Long 数组时 Postgresql 错误

java - LogBack RollingFileAppender 不写入日志文件(尽管 FileAppender 有效)

java - 是否可以在 DEBUG 级别登录到文件,在 INFO 级别登录到 logback 控制台?

java - Logback AsyncAppender无法打印方法名称和行号