PRI由尖括号和数字组成。这里的数字是由高低位组合计算而成的。其中高位的叫做 Facility(设备,不过为了跟 header中的 device区别,用程序来称呼更恰当),低位的叫做 Severity(严重性)。
其程序位含义列表如图 3-1所示。其严重性位含义列表如图 3-2所示。
Numerical Severity Code
0 Emergency: system is unusable
1 Alert: action must be taken immediately
2
Critical: critical conditions 3
Error: error conditions 4
Warning: warning conditions 5
Notice: normal but significant condition 6
Informational: informational messages 7
Debug: debug-level messages
图 3-2
计算规则是:
PRI = Facility × 8 + Level
Facility = PRI / 8
Level = PRI % 8
根据程序位和严重性位含义可以计算得出,PRI最小为 0,最大为 191。一般来说,非自定义的程序位,最常见的就是 kernel,这时候也最简单,因为程序位是 0。自定义日志时,一般采用 local(0-7)发送。
Linux系统一般带有一个命令 logger,可用于直接从命令行写入 Syslog,用法如下。
ping -c 3 127.0.0.1 | logger -it log4ping -p local3.notice
之后我们可以在 Syslog中看到如下记录。
Apr 4 10:41:01 localhost <157> log4ping[10992]: PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
Apr 4 10:41:01 localhost <157> log4ping[10992]: 64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.029 ms
Apr 4 10:41:02 localhost <157> log4ping[10992]: 64 bytes from 127.0.0.1: icmp_req=2 ttl=64 time=0.023 ms
Apr 4 10:41:03 localhost <157> log4ping[10992]: 64 bytes from 127.0.0.1: icmp_req=3 ttl=64 time=0.029 ms
Apr 4 10:41:03 localhost <157> log4ping[10992]:
Apr 4 10:41:03 localhost <157> log4ping[10992]: --- 127.0.0.1 ping statistics ---
Apr 4 10:41:03 localhost <157> log4ping[10992]: 3 packets transmitted, 3 received, 0% packet loss, time 1999ms
Apr 4 10:41:03 localhost <157> log4ping[10992]: rtt min/avg/max/mdev = 0.023/0.027/0.029/0.003 ms
记录中的 157,就是通过 local3的 19乘以 8加上 notice的 5得到的。
如果你发现自己设备上的 Syslog结果不是这个样子,暂时不要奇怪,稍后读到 Rsyslog章节的时候就明白了。