设备必须通过一些规则来配置,以便显示或者传递事件信息。不管管理员决定怎样配置对事件信息的处理,把这些信息发送到syslog接受者的过程一般都由下面部分构成:决定哪个帮助信息要被发送,要被发送的级别,定义远程的接受者。
被 传输的syslog信息的格式主要有3个容易识别出来的部分,分别是PRI、HEADER、MSG。数据包的长度小于1024个字节。PRI部分必须有 3、4、5个字符,以“<”开头,然后是一个数字,并以“>”结尾。在方括号内的数字被称为优先级 (Priority),由facility和severity两个值构成。信息中的facilities和severities通过十进制值进行数字的编 码。一些操作系统的后台监控程序和进程被分配一个facility值,那些没有分配一个facility值的进程和daemons将会使用“local use”的facilities值或者“用户级别”的facilities值。下面的表格表示被指定的Facilities值和对应的数字代码。
Numerical Code Facility
0 kernel messages
1 user-level messages
2 mail system
3 system daemons
4 security/authorization messages
5 messages generated internally by syslogd
6 line printer subsystem
7 network news subsystem
8 UUCP subsystem
9 clock daemon
10 security/authorization messages
11 FTP daemon
12 NTP subsystem
13 log audit
14 log alert
15 clock daemon
16 local use 0 (local0)
17 local use 1 (local1)
18 local use 2 (local2)
19 local use 3 (local3)
20 local use 4 (local4)
21 local use 5 (local5)
22 local use 6 (local6)
23 local use 7 (local7)
表1 Syslog Message Facilities
每个信息优先级也有一个表示十进制Severity登记的参数, 下面的表格描述出他们和对应数值。
Numerical Code Severity
0 Emergency 应急EMERY,任何紧急情况,包括系统PANIC。
1 Alert 警报ALERT,任何需要立即注意的发生情况
2 Critical致命错误CRIT,设备发生了关键性问题情况,包括进程CRASH,OVERFLOW
3 Error 错误ERR任何错误的东西,错误事件
4 Warning 警告WARNING任何报警,警告事件
5 Notice 提示NOTICE,普通但重要的事件
6 Informational 信息INFO,有用的信息
7 Debug 诊断DEBUG, 用于调试,程序,产品设备
表 2 Syslog Message Severities
Priority(优先级) = facility * 8 + severity值。比如说,一个核心信息(facility=0)和一个Emergency的severity将会产生优先级为0。同样, 一个“local use 4”信息(facility=20)和一个Notice的severity(severity=5)将会产生165的优先级。
标 题(HEADER)部分由称为TIMESTAMP和HOSTNAME的两个域组成,PRI结尾的“>”会马上跟着一个TIMESTAMP,任何一个 TIMESTAMP或者HOSTNAME域后面都必须跟着一个空格字符。HOSTNAME包含主机的名称,若无主机名或无法识别则显示IP地址。如果一个 主机有多个IP地址,它通常会使用它传送信息的那个IP地址。TIMESTAMP是本机时间,采用的格式是“Mmm dd hh:mm:ss”表示月日时分秒。HOSTNAME域仅仅能够包括主机名称,Ipv4地址或者是信息产生者的Ipv6地址。
MSG部分是Syslog数据包剩下的部分。这通常包含了产生信息进程的额外信息,以及信息的文本部分。MSG部分有两个域,分别为TAG域和 CONTENT域,TAG域的值是产生信息的程序或者进程的名称,CONTENT包含了这个信息的详细内容。传统上来说,这个域的格式较为自由,并且给出 一些时间的具体信息。TAG是一个不许超过32个字符的字母数字字符串,任何一个非字母数字字符都将会终止TAG域,并且被假设是CONTENT域的开 始。在大多数情况下,表示TAG结束的CONTENT域的第一个字符用左大括号( [ ],分号( : )或者是空格来表示。
syslog.conf - syslogd的配置文件详解
syslog.conf文件是syslogd守护进程的主要配置文件,文件定义了记录消息的规则。
每条规则包含两个字段,selector和action。两个字段用多个空格或跳格分开。selector字段定义了产生消息的设备和消息的优先权。action字段是消息的去向。
以#开头的行和空行都被忽略。
现在的syslogd程序可以理解扩展的语法。比如将一行信息用"\\"分成两行。
选择器:
此字段用点(.)分开两个部分--设备和优先权。两个部分都开以用十进制数来定义,但最好不要那样做,会产生警告,两个部分的取值在syslog(3)中有定义。设备如下面所示:
auth,authpriv,cron,daemon,kern,lpr,mail,mark,news,
security,syslog,user,uucp和从local0到local7。
(注:security已经不再被使用了;mark也是只限内部使用,不再被用于应用程序。)
你可以在这里定义或重定向消息。设备是产生消息的子系统,例如:所有使用syslog的mail程序将使用mail设备记录消息。
优先权从低到高如下:
debug,info,notice,warning,warn(同warning),err,error(同err),
crit,alert,emerg,panic(同emerg).
error,warn,panic是非标准的,不可以使用。优先权等级定义了消息的格式。
原始BSD的作法是将所有相当或高于给定优先级别的消息都送往指定动作处。本系统的syslogd也使用同样的规则,不过有所扩展。此外,"*"可以表示所有设备或所有优先权,取决于其位置。none表示没有优先权。可以用分开来定义多个设备,优先权部分不可以这样做。
多个selector可以用来分开使其指向一个action,务必记住,每个selector都可以重写前一个。使用这条规则,可以从表达式中除去一些优先权。
本系统的syslogd(8)在原BSD基础上有些扩充。你可以在一个优先权的前面加上一个"="符号,表示只定义这一个优先权而不含高于其的优先权。还可以用"!"符号来取反,即取小于其优先权下载本文