Syslog的格式说明
设备必须通过一些规则来配置,以便显示或者传递事件信息。
不管管理员决定怎样配置对事件信息的处理,把这些信息发送到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
0kernel messages
1user-level messages
2mail system
3system daemons
4security/authorization messages
5messages generated internally by syslogd
6line printer subsystem
7network news subsystem
8UUCP subsystem
9clock daemon
10security/authorization messages
11FTP daemon
12NTP subsystem
13log audit
14log alert
15clock daemon
16local use 0(local0)
17local use 1(local1)
18local use 2(local2)
19local use 3(local3)
20local use 4(local4)
21local use 5(local5)
22local use 6(local6)
23local use 7(local7)
表1Syslog Message Facilities
每个信息优先级也有一个表示十进制Severity登记的参数, 下面的表格描述出他们和对应数值。
Numerical Code Severity
0Emergency 应急EMERY,任何紧急情况,包括系统PANIC。
1Alert 警报ALERT,任何需要立即注意的发生情况
2Critical致命错误CRIT,设备发生了关键性问题情况,包括进程CRASH,OVERFLOW
3Error 错误ERR任何错误的东西,错误事件
4Warning 警告WARNING任何报警,警告事件
5Notice 提示NOTICE,普通但重要的事件
6Informational 信息INFO,有用的信息
7Debug 诊断DEBUG,用于调试,程序,产品设备
表2Syslog 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基础上有些扩充。
你可以在一个优先权的前面加上一个"="符号,表示只定义这一个优先权而不含高于其的优先权。
还可以用"!"符号来取反,即取小于其优先权。