系统日志控制台和文件

系统日志控制台和文件

我想将所有内容记录到我的应用程序中的系统日志中。我将主要在两个级别进行日志记录。信息和调试。我不希望最终用户能够看到或访问调试消息。因此,这些消息将被捕获到syslog.conf一个特殊的文件夹中。

我的问题是我可以将其他消息记录到控制台和消息文件中吗?我的想法如下,但这并不像我预期的那样工作。

#  /etc/syslog.conf     Configuration file for busybox's syslogd utility

*.debug     /var/log/debug

*.info      /var/log/info
*.info      /dev/consol

答案1

按照man 3 syslog确保调用时正确设置“优先级”值syslog()

手册页中的一些有用的片段:

该参数是通过将一个值和一个值priority进行“或”运算而形成的(如下所述)。如果没有值与 进行或运算 ,则使用 设置的默认值,或者,如果没有先前的调用,则使用默认值。facilitylevelfacilitypriorityopenlog()openlog()LOG_USER

的值facility:该facility参数用于指定记录消息的程序类型。这让配置文件指定来自不同设施的消息将以不同的方式处理。

  • LOG_AUTH 安全/授权消息
  • LOG_AUTHPRIV 安全/授权消息(私有)
  • LOG_CRON 时钟守护进程(cron 和 at)=
  • LOG_DAEMON 没有单独设施值的系统守护进程
  • LOG_FTP FTP守护进程
  • LOG_KERN 内核消息(这些消息不能从用户进程生成)
  • LOG_LOCAL0通过LOG_LOCAL7 保留供本地使用
  • LOG_LPR 行式打印机子系统
  • LOG_MAIL 邮件子系统
  • LOG_NEWS USENET新闻子系统
  • LOG_SYSLOG 由 syslogd(8) 内部生成的消息
  • LOG_USER(默认)通用用户级消息
  • LOG_UUCP UUCP子系统

的值level:这决定了消息的重要性。这些级别按重要性递减顺序排列:

  • LOG_EMERG 系统无法使用
  • LOG_ALERT 必须立即采取行动
  • LOG_CRIT 临界条件
  • LOG_ERR 错误条件
  • LOG_WARNING 警告条件
  • LOG_NOTICE 正常但重要的状况
  • LOG_INFO 信息性消息
  • LOG_DEBUG 调试级消息

该函数setlogmask(3)可用于将日志记录限制为仅指定级别。

相关内容