rsyslogd 可以负责主机产生的各个信息的登录,而这些信息本身是有“严重等级”之分的。每个 Linux distributions 放置的登录文件文件名可能会有所差异。
基本上, rsyslogd 针对各种服务与讯息记录在某些文件的配置文件就是 /etc/rsyslog.conf,这个文件规定了“(1)什么服务 (2)的什么等级讯息 (3)需要被记录在哪里(设备或文件)” ,所以设置的语法会是这样:

我们将上面的数据简单的分为三部分来说明:
服务名称
rsyslogd 主要还是通过 Linux 核心提供的 syslog 相关规范来设置数据的分类的,Linux 的syslog 本身有规范一些服务讯息, 你可以通过这些服务来储存系统的讯息。Linux 核心的syslog 认识的服务类型主要有下面这些: (可使用 man 3 syslog 查询到相关的信息,或查询syslog.h 这个文件来了解的!)

上面谈到的都是 Linux 核心的 syslog 函数自行制订的服务名称,软件开发商可以通过调用上述的服务名称来记录他们的软件。 举例来说, sendmail 与 postfix 及 dovecot 都是与邮件有关的软件,这些软件在设计登录文件记录时,都会主动调用 syslog 内的 mail 服务名称(LOG_MAIL)。所以上述三个软件 (sendmail, postfix, dovecot) 产生的讯息在 syslog 看起来,就会“是 mail ”类型的服务了。我们可以将这个概念绘制如下面的图示来理解:

另外,每种服务所产生的数据量其实差异是很大的,举例来说, mail 的登录文件讯息多的要命, 每一封信件进入后, mail 至少需要记录“寄信人的信息;与收信者的讯息”等等; 而如果是用来做为工作站主机的,那么登陆者 (利用 login 登录主机处理事情) 的数量一定不少,那个 authpriv 所管辖的内容可就多的要命了。
为了让不同的信息放置到不同的文件当中,好让我们分门别类的进行登录文件的管理, 所以,将各种类别的服务之登录文件,记录在不同的文件里面,就是我们 /etc/rsyslog.conf 所要作的规范了。
讯息等级
同一个服务所产生的讯息也是有差别的,有启动时仅通知系统而已的一般讯息(information), 有出现还不至于影响到正常运行的警告讯息 (warn) ,还有系统硬件发生严重错误时,所产生的重大问题讯息 (error 等等); 讯息到底有多少种严重的等级呢?基本上,Linux 核心的 syslog 将讯息分为七个主要的等级,根据 syslog.h 的定义,讯息名称与数值的对应如下:

基本上,在 0(emerg) 到 6(info) 的等级之间,等级数值越高代表越没事,等级靠近 0 则代表事情大条了!除了 0 到 6 之外还有两个比较特殊的等级, 那就是 debug(错误侦测等级) 与 none (不需登录等级) 两个,当我们想要作一些错误侦测,或者是忽略掉某些服务的信息时, 就用这两个。
特别留意一下在讯息等级之前还有 [.=!] 的链接符号。他代表的意思是这样的:
. :代表“比后面还要严重的等级 (含该等级) 都被记录下来”的意思,例如: mail.info代表只要是 mail 的信息,而且该信息等级严重于 info (含 info 本身)时,就会被记录下来的意思。
.=:代表所需要的等级就是后面接的等级而已, 其他的不要!
.!:代表不等于, 亦即是除了该等级外的其他等级都记录。
讯息记录的文件名或设备或主机

早期 CentOS 5.x 以前,要达成syslog 的功能是由一只名为 syslogd 的 daemon 来完成的, 从 CentOS 6 以来 (包含CentOS 7) 则是通过 rsyslogd 这个 daemon。
CentOS 7.x 默认的 rsyslog.conf 内容
下面标注着reyslogd的系统服务记录,/etc/rsyslog.conf 这个文件的默认内容。

1. #kern.*:只要是核心产生的讯息,全部都送到 console(终端机) 去。console 通常是由外部设备连接到系统而来, 举例来说,很多封闭型主机 (没有键盘、屏幕的系统) 可以通过连接 RS232 连接口将讯息传输到外部的系统中, 例如以笔记本电脑连接到封闭主机的 RS232 插口。这个项目通常应该是用在系统出现严重问题而无法使用默认的屏幕观察系统时, 可以通过这个项目来连接取得核心的讯息。
2. *.info;mail.none;authpriv.none;cron.none:由于 mail, authpriv, cron 等类别产生的讯息较多, 且已经写入下面的数个文件中,因此在 /var/log/messages 里面就不记录这些项目。除此之外的其他讯息都写入 /var/log/messages 中。这也是为啥我们说这个messages 文件很重要的缘故。
3. authpriv.*:认证方面的讯息均写入 /var/log/secure 文件;
4. mail.*:邮件方面的讯息则均写入 /var/log/maillog 文件;
5. cron.*:例行性工作调度均写入 /var/log/cron 文件;
6. *.emerg:当产生最严重的错误等级时,将该等级的讯息以 wall 的方式广播给所有在系统登陆的帐号得知, 要这么做的原因是希望在线的使用者能够赶紧通知系统管理员来处理这么可怕的错误问题。
7. uucp,news.crit:uucp 是早期 Unix-like 系统进行数据传递的通讯协定,后来常用在新闻群组的用途中。 news 则是新闻群组。当新闻群组方面的信息有严重错误时就写入/var/log/spooler 文件中;
8. local7.*:将本机开机时应该显示到屏幕的讯息写入到 /var/log/boot.log 文件中;
每个 Linux distributions 的 rsyslog.conf 设置差异是颇大的,如果你想要找到相对应的登录信息时, 可得要查阅一下 /etc/rsyslog.conf 这个文件才行!否则可能会发生分析到错误的信息。
自行增加登录文件文件功能
需要特殊的文件来帮你记录时,千万给他记录在/etc/rsyslog.conf 当中,如此一来,你就可以重复的将许多的信息记录在不同的文件当中,以方便你的管理。
