3

我尝试从我的 C 程序进行日志记录,但在 /var/log/messages 中我的程序中没有找到任何条目。那里还有其他最近的条目。

我正在使用 Fedora 17:Linux appliance.localdomain 3.5.3-1.fc17.i686 #1 SMP Wed Aug 29 19:25:38 UTC 2012 i686 i686 i386 GNU/Linux

我看到安装了这个日志包:rsyslog-5.8.10-2.fc17.i686

myprompt: rpm -ql rsyslog-5.8.10-2.fc17.i686 | grep conf$

/etc/rsyslog.conf

在 /etc/rsyslog.conf 中:

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

我的代码:

#include <syslog.h>
...
setlogmask (LOG_UPTO (LOG_NOTICE));
openlog ("m61", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_USER);
syslog (LOG_INFO, "In m61_init");
closelog ();
4

1 回答 1

7

您的日志优先级掩码 setlogmask (LOG_UPTO (LOG_NOTICE));丢弃日志消息,因为LOG_INFO优先级低于LOG_NOTICE

按重要性降序排列的优先级

  • LOG_EMERG
  • LOG_ALERT
  • LOG_CRIT
  • LOG_ERR
  • LOG_WARNING
  • LOG_NOTICE
  • LOG_INFO
  • LOG_DEBUG

关于优先级

这说明了消息内容的重要性。定义的优先级值的示例有:调试、信息、警告、关键。有关完整列表,请参阅系统日志;系统日志。除了优先级有明确的顺序之外,每个优先级的含义完全由系统管理员决定。

在您的代码中更改 setlogmask 函数中的值或 syslog 函数中的优先级。

于 2013-09-08T16:27:41.040 回答