You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Debian Jessie下程序syslog日志部分未同步至rsyslog,仅可通过journalctl查看

Debian Jessie下syslog日志未同步至rsyslog的问题排查及解决

可能的原因及对应解决方法

1. journald未启用syslog转发

Debian Jessie默认使用systemd-journald接管系统日志,若journald未配置将日志转发给rsyslog,部分直接提交给journald的消息只会留在journal中。

  • 解决方法:
    • 编辑/etc/systemd/journald.conf,确保FeedSyslog=yes(去掉注释并设置为yes)
    • 重启相关服务:
      systemctl restart systemd-journald
      systemctl restart rsyslog
      

2. rsyslog未匹配到日志的设施/优先级

程序调用syslog()时指定的日志设施(facility)或优先级(priority)可能未被rsyslog的配置规则匹配,导致这些日志未被写入文件,但journald会记录所有日志。

  • 解决方法:
    • 确认程序中syslog()调用的参数,比如使用的是LOG_LOCAL0/LOG_USER等设施,以及对应的优先级(如LOG_INFO)
    • 编辑rsyslog配置文件(如/etc/rsyslog.conf或/etc/rsyslog.d/your-service.conf),添加匹配规则,例如:
      # 匹配LOG_LOCAL0设施的所有优先级日志,写入指定文件
      local0.* /var/log/myservice.log
      
    • 用logger命令测试规则是否生效:
      logger -p local0.info "Test log message"
      
      检查目标日志文件是否收到该消息

3. rsyslog未配置从journald读取日志

若rsyslog未加载imjournal模块,无法从journald获取已被截获的日志消息,导致部分日志仅在journalctl中可见。

  • 解决方法:
    • 编辑/etc/rsyslog.conf,确保添加以下配置:
      $ModLoad imjournal
      $IMJournalStateFile imjournal.state
      
    • 重启rsyslog服务:
      systemctl restart rsyslog
      

4. rsyslog缓冲区溢出导致消息丢失

高负载场景下,rsyslog的默认缓冲区大小可能不足以处理突发日志,导致部分消息被丢弃。

  • 解决方法:
    • 编辑rsyslog配置文件,增大主消息队列大小:
      $MainMsgQueueSize 10000
      
    • 检查/var/log/syslog中是否有queue overflow相关的错误日志,确认是否是缓冲区问题
    • 重启rsyslog服务

5. 日志消息长度超过rsyslog限制

syslog()发送的消息若超过rsyslog的默认最大消息长度(2048字节),会被截断或直接丢弃。

  • 解决方法:
    • 编辑rsyslog配置文件,增大最大消息长度:
      $MaxMessageSize 8192
      
    • 重启rsyslog服务

内容的提问来源于stack exchange,提问作者hpirlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 16:09:24