*.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages
#把除邮件、新闻组、授权信息、计划任务等外的所有通知性消息都写入messages文件中。
mail,news.=info -/var/adm/info
#把邮件、新闻组中仅通知性消息写入info文件,其他信息不写入;并且先放到缓存中,累积到一定程度后再写入文件。
mail.*;mail.!=info /var/adm/mail
#把邮件的除通知性消息外都写入mail文件中,。
mail.=info /dev/tty12
#仅把邮件的通知性消息发送到tty12终端设备
*.alert root,joey
#如果root和joey用户已经登陆到系统,则把所有紧急信息通知他们
*.* @finlandia
#把所有信息都导向到finlandia主机(通过/etc/hosts或dns解析其IP地址)
※注意:每条消息均会经过所有规则的,并不是唯一匹配的。
也就是说,假设mail.=info信息通过上面范例中定义的规则时,/var/adm/info、/var/adm/mail、/dev/tty12,甚至finalandia主机都会收到相同的信息。这样看上去比较烦琐,但可以带来的好处就是保证了信息的完整性,可供不同地方进行分析。
6、测试
部分情况下,上述规的实际执行结果和定义的预想结果可能会有出入。这时,可使用logger程序辅助测试:
# logger -p user.notice 'Hello World!'
日志显示:
引用
Nov 12 13:40:04 dc5test root: Hello World!
其表示意思如下:
引用
第一列:日志产生时间
第二列:产生此日志的主机名称
第三列:产生此日志的应用程序或用户名称
第四列:日志信息
7、自定义日志级别
正如前面所说的,应用程序的日志级别是由应用程序所决定的。部分应用程序可通过配置,定义其日志级别。
例如,/etc/ssh/sshd_config文件中就有:
引用
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO
把sshd的日志定义在authpriv.info级别。配合syslog.conf中的:
引用
authpriv.* /var/log/secure
则日志文件被写入/var/log/secure文件中。
◎我们修改为:
引用
SyslogFacility local0
配合在syslog.conf中增加:
引用
local0.* /var/log/sshd.log
保存后,重新启动sshd或syslog服务,则以后sshd服务的所有日志都会单独的放到sshd.log文件中了。
三、设置服务参数
默认情况下,syslog进程是不能接受其他日志服务器发过��的消息的。而通过修改其启动参数,可实现日志的大集中功能。
修改/etc/sysconfig/syslog文件:
引用
-r : 打开接受外来日志消息的功能,其监控514 UDP端口;
-x : 关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
-m : 修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次“--MARK--”信息;
-h : 默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有接受到的信息都可根据syslog.conf中定义的@主机转发过去。
通过man syslogd可获得更详细的帮助,而具体到实际配置文件为:
引用
SYSLOGD_OPTIONS="-r-x-m 0"
保存后,重启服务即可:
# service syslog restart
此时,客户机只要通过修改syslog.conf,定义动作为@主机或IP,即可发送日志信息到本服务器中。
(在构建集中的日志服务器时,请务必配合ntp时间服务,以保证信息的有效性,避免不必要的麻烦)
另外,/etc/sysconfig/syslog配置文件中,还定义有klogd服务的启动参数:
引用
KLOGD_OPTIONS="-x"
详细帮助,请参考man 8 klogd或man klogd。