Product SiteDocumentation Site

9.5. syslog 系统事件

9.5.1. 原则与机制

Starting with Debian Bookworm, the rsyslog package is no longer installed by default, which in the past provided the default logging functionality. Instead, the log is provided by systemd's journal, which can be accessed by the journalctl(5) command.
There are situations, where it is necessary or desired to install rsyslog, though, e.g. to send all log messages to a central server. After installation, the rsyslogd daemon is responsible for collecting service messages coming from applications and the kernel, then dispatching them into log files (usually stored in the /var/log/ directory). It obeys the /etc/rsyslog.conf configuration file.
每个日志信息都和应用子系统相关联(文档中称为“facility”):
  • authauthpriv:用于授权;
  • cron:来自任务调度服务, cronatd;
  • daemon:影响未分类的守护进程(DNS, NTP等);
  • ftp:涉及FTP 服务器;
  • kern:源于内核的消息;
  • lpr:源于打印子系统;
  • mail:源于电子邮件子系统;
  • news:Usenet 子系统消息(主要源自NNTP -网络消息传输协议-管理新闻组的服务器);
  • syslog:源于 syslogd 服务自身的消息;
  • user:用户消息(通用);
  • uucp:源于UUCP(Unix to Unix Copy Program,一种老式的分发电子邮件消息的协议)服务的消息;
  • local0local7:保留本地使用。
每种消息都有其优先级。下面按降序列出:
  • emerg:“救命!” 紧急状态,系统可能已挂了。
  • alert:赶快,任何推迟都是危险的,必须马上采取行动;
  • crit:情况很严重;
  • err:错误;
  • warn:警告(潜在的错误);
  • notice:正常情况,但是该消息很重要;
  • info:提供信息;
  • debug:调试消息。

9.5.2. 配置文件

The syntax of the /etc/rsyslog.conf file is detailed in the rsyslog.conf(5) manual page, but there is also HTML documentation available in the rsyslog-doc package (/usr/share/doc/rsyslog-doc/html/index.html). The overall principle is to write “selector” and “action” pairs. The selector defines all relevant messages, and the action describes how to deal with them.

9.5.2.1. 选择器语法

选择器是由分号分隔(“;”)的 subsystem清单及配对的priority(例如: auth.notice;mail.info)。星号(“*”)代表所有的子系统和优先级(例如: *.alert 或者 mail.*)。几个子系统可以通过逗号(“,”)合并成组(例如: auth,mail.info)。优先级指明相同或更高优先级的消息;因此 auth.alert 指具有 alertemerg 优先级的auth 子系统消息。惊叹号(“!”)前缀表示求反,换句话说指低等级的优先级;因此 auth.!notice指有 auth产生的具有 infodebug 优先级的消息。等号(“=”)前缀表示精确指定某种优先级(auth.=notice 只关心具有 notice 优先级的 auth 消息)。优先级依次为:debug, info, notice, warning/warn, err/error , crit, alert, emerg/panic。
列在选择器中的元素会覆盖先前的元素。因此可以限定一个集合或者排除一些元素。例如, kern.info;kern.!err 表示源于内核优先级在 infowarn之间的消息。 none 优先级指示空集(无优先级),可用于从集合中排除一个子系统消息。于是, *.crit;kern.none 指所有优先级等于或高于 crit 但不是来自内核的消息。

9.5.2.2. 行为的语法

各种可能的行为包括:
  • 添加信息到文件(例如: /var/log/messages);
  • 将消息发送到 syslog 远程服务器(例如: @log.falcot.com);
  • 将消息发送至已有的命名管道(例如: |/dev/xconsole);
  • 将消息发给一个或多个已经登录的用户(如: root,rhertzog);
  • 将消息发给所有登录用户(如: *);
  • 将消息写入文本控制台(如: /dev/tty8)。