我的 logback syslog appender 有啥问题?

Posted

技术标签:

【中文标题】我的 logback syslog appender 有啥问题?【英文标题】:What's wrong with my logback syslog appender?我的 logback syslog appender 有什么问题? 【发布时间】:2015-04-09 20:10:27 【问题描述】:

我正在尝试让 logback syslog appender 正常工作,但我肯定有一些配置错误。我创建了一个small sample project,我认为它应该记录到系统日志中,但它没有。

我确定我错过了一些愚蠢的东西。这是来自logback.xml 的附加程序:

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

我已尝试显式添加端口 (514),但并不高兴。在我尝试过的两个系统上,我已经验证 syslog 正在使用 logger "test message" 接收输入,然后跟踪 /var/log/messages 或 /var/log/system.log。

为了将 logback/slf4j 日志记录到 syslog,我需要进行哪些更改?

【问题讨论】:

你检查过***.com/questions/8350027/log4j-and-syslogappender 吗? 我做到了,但我从 node.js (bunyan-syslog) 登录到同一台机器上的 syslog 就好了,所以这不太可能。我试试看。 不确定 node.js syslog 日志是如何工作的,但从syslog.cc 来看,我会说它使用本地日志,而 logback/log4j 使用远程日志(因此是主机和端口)。顺便提一句。 tcpdumping 环回接口可以判断消息是否从 java 发送... 【参考方案1】:

您的代码没有问题,问题在于系统配置。 使用您提供的测试项目,我能够使 syslog appender 工作(Ubuntu 14.10)。

这里有一些步骤:

编辑/etc/syslog.conf 并确保您启用了网络系统日志:
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
# note that logback seems to use UDP, so this isn't strictly necessary.
$ModLoad imtcp
$InputTCPServerRun 514
如果您更改配置,请重新启动 rsyslog (service rsyslog restart)(重新加载不起作用) 检查系统日志是否正在使用lsof -i | grep syslog 进行侦听

结果:

【讨论】:

成功了。只要系统允许,我就会奖励赏金(说我必须等待 22 小时)。感谢您的帮助。 很高兴有帮助:) 我只看到 /etc/rsyslog.conf (ubuntu 16.04)

以上是关于我的 logback syslog appender 有啥问题?的主要内容,如果未能解决你的问题,请参考以下文章

未设置 logback logstash 编码器 Syslog 标头

Java Syslog 仅使用 logback 记录到本地机器

Logback 只会将消息记录到 syslog 一次

无法在 Logback 中将 appender 设置为 logger

Log4net:SysLog Appender 示例

Logback - 你能从 env 变量中定义 appender 名称和类吗?