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

使用syslog函数配合rsyslog写入指定文件失败,求解决办法

问题描述

我尝试用syslog函数将程序PingWatchdog的日志写入/var/log/pingwatchdog.log,目前能看到日志内容,但无法输出到目标文件。已尝试以下方法均无效:

定义的日志宏

#define log_info(...) syslog(LOG_INFO, __VA_ARGS__);

方法一

代码实现:

openlog("PingWatchdog", LOG_PID|LOG_CONS, LOG_USER);
log_info("[INFO]: PingWatchdog: pingDispatcher thread starting.");
closelog();

对应/etc/rsyslog.d/下的配置规则:

if:syslogtag, isequal, "PingWatchdog:" /var/log/pingwatchdog.log
&stop

方法二

代码实现:

openlog("PingWatchdog", 0, LOG_LOCAL1);
log_info("[INFO]: PingWatchdog: pingDispatcher thread starting.");
closelog();

对应/etc/rsyslog.d/下的配置规则:

local1.info /var/log/pingwatchdog.log

额外尝试的规则

if $programname == 'PingWatchdog' then /var/log/pingwatchdog.log

解决步骤

1. 修正rsyslog配置的语法与命名

  • /etc/rsyslog.d/下的配置文件必须以.conf结尾(比如命名为pingwatchdog.conf),否则rsyslog不会加载该文件。
  • 方法一中的规则语法错误,正确格式应为:
    if $syslogtag == 'PingWatchdog:' then /var/log/pingwatchdog.log
    & stop
    
    注意&与stop之间需加空格,且变量前要加$符号。

2. 确保目标日志文件的权限合规

  • 先检查文件权限:
    ls -l /var/log/pingwatchdog.log
    
  • 若文件不存在,先创建并设置rsyslog可读写的权限(rsyslog通常以syslog用户运行):
    sudo touch /var/log/pingwatchdog.log
    sudo chown syslog:adm /var/log/pingwatchdog.log
    sudo chmod 640 /var/log/pingwatchdog.log
    

3. 验证配置并重启rsyslog服务

  • 检查rsyslog配置语法是否合法:
    sudo rsyslogd -N1
    
  • 重启服务使配置生效:
    sudo systemctl restart rsyslog
    

4. 手动测试日志规则是否生效

  • 用logger命令发送测试日志,验证规则:
    • 对应方法二的LOG_LOCAL1设施:
      logger -t PingWatchdog -p local1.info "Test log message"
      
    • 对应方法一的LOG_USER设施:
      logger -t PingWatchdog -p user.info "Test log message"
      
  • 查看目标文件是否收到日志:
    cat /var/log/pingwatchdog.log
    

5. 优化程序中syslog的调用逻辑

  • 避免频繁调用openlog和closelog,建议在程序启动时调用一次openlog,退出时调用closelog,而非每次打印日志都执行打开/关闭操作。
  • 确认编译器支持可变参数宏(C99及以上标准),确保log_info宏能正确展开。

6. 开启rsyslog调试模式定位问题

  • 若以上步骤无效,关闭rsyslog服务后启动调试模式:
    sudo systemctl stop rsyslog
    sudo rsyslogd -d
    
  • 运行程序生成日志,观察调试输出中关于PingWatchdog日志的处理记录,排查具体阻塞点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:45:38