Syslog协议定义的日志格式如下:
PRI部分 | HEADER部分 | MSG部分 | ||
优先级 | 时间 | 主机名/IP | TAG | Content |
<1-3> | MMM dd hh:mm:ss |
| 进程名称和进程PID | 消息内容 |
Syslog4j处理的格式如下:
PRI部分 | HEADER部分 | MSG部分 | |
优先级 | 时间 | 主机名[IP] | Content 消息内容 |
<1-3> | MMM dd hh:mm:ss |
|
在Syslog4j中解析日志的类是SyslogServerEvent。在日志中不包含TAG部分。主机名和主机IP的情况是:
1)可以不包含主机名或主机IP,但消息内容不要有空格;
2)可以只包含主机名,消息内容可以有空格;
3)可以只包含主机IP,消息内容可以有空格;
4)可以即包含主机名也包含主机IP,但必须主机名在前主机IP在后,中间用空格分开。
有一点需要注意的是日期格式。
中文操作系统中java虚拟机得到的日期是:十一月 17 17:53:19。如果客户端送来的日期是:Nov 17 17:53:19,中文系统的服务端解析会抛异常。
解决方法是创建格式转换器时指定语言环境:
String DATE_FORMAT = "MMM ddHH:mm:ss";
formatter1 = new SimpleDateFormat(DATE_FORMAT,Locale.ENGLISH);