Syslog包主要分为3个部分,PRI, HEADER,以及MSG,一般总长度不超过1024个字节。
其中PRI部分记录了facility和level(severity)的值,使用<>扩起来,计算公式为facility*8+level;syslog-ng中会使用<>在行首进行过滤,其中facility有:
level有:
HEADER部分记录的时间和主机相关信息,格式为 Mmm dd hh:mm:ss(May 21 13:23:40)hostname/ip。Mmm是3个字母的英文缩写;dd为日期,小于10时必须用空格代替缺少的一个数字。主机名部分一般使用主机名,如果没有的话可以使用IPv4或者IPv6的地址。需要注意的是主机名中不能包含任何空格。时间戳和主机名后面都各自跟一个空格。syslog-ng会严格的按照规矩进行分割和检查,只有格式正确才会分别获取。
MSG部分一般包含生成消息的进程信息(TAG)以及消息正文(CONTENT)。TAG部分主要是包含生成消息的进程信息,不能超过32个字符。CONTENT必须是一些可见字符,这部分就是消息的正文。TAG与CONTENT之间的间隔用非字母表字母隔开,一般用”[“,”:”或者空格隔开。在syslog-ng中从文件中读来的日志信息会被认为是一个满足syslog协议的信息,也会被进行分析,因此当日志首部分前32个字节中包括了”[“,”:”或者空格中的任意字符,就会被当做是TAG信息,导致CONTENT丢失部分字符。