Linux一般采用syslog这样的守护进程来执行日志记录功能,他的配置文件是/etc/syslog.conf,其基本格式为:
sector action 中间一定是tab键而不是空格键selector用下面的格式指明正在发送日志消息的程序(即“设施”)和消息的严重性级别 facility.level设施的名称和严重性级别必须从已定义的一个简短列表中选择;程序不能使用自己定义的值。
设施分别为内核,为常用应用程序组,以及为本地编写的程序进行定义。
任何其他程序则归为普通设施“用户”类。selector可以包含关键字*和none,其含义分别为“所有的”或“什么都没有”。
selector可以包括多个逗号分开的工具。多个selector可以用分号组合起来。通常情况下,selector相互之间为“活(or)“的关系;
和某个selecotr匹配的消息将由同一行的action处理。但是,不管同一行中其他的selector是如何定义的,带有none级别的selector则会排除在外。下面给出几个格式化和组合selector的示例:
facility.level action
facility,facility2.level action
facility1.level,facility.level2 action
*.level action
*.level;badfacility.none action
下表列出了有效的设施名称。
工具 使用该工具的程序 kern 内核 user 用户进程(默认值) mail sendmail以及其他相关软件 daemon 系统守护进程 auth 与安全和授权相关的命令 news usenet新闻系统 uucp 为uucp保留,并不使用 cron cron守护进程 mark 定期产生的时间戳 local0-7 8种本地消息(除了“mark“以为的所有设施)
syslog的严重级别按照重要性递减的顺序如下:
级别 含义 emerg 恐慌状态 alert 紧急状态 crit 临界状态 err 其他错误情况 warning 警告信息 notice 需要调查的信息 info 提供信息的消息 debug 只用户调试
action字段说明了应该如何处理一条消息,如下表
动作 含义 filename 将消息写入到本地机器的一个文件中 @hostname 将消息转发到hostname上的syslogd @ipaddress 将消息转发到ip为ipaddress的主机 user1,user2,... 如果用户已经登录,将消息写到用户屏幕上
在Linux中的syslogd中,对syslog.conf文件,可以在优先级之前加上字符=和!作前缀,分别表示“只允许在该优先级”和”除了本优先级和更多的优先级“,如下表表示:
选择符 含义 mail.info 选择>= info的邮件指定的消息 mail.=info 只选择info的消息 mail.info;mail.!err 只选择info.notice和warning的消息 mail.debug;mail.!=warning 选择除了warning以外的所有消息
后记:如果采用远程日志写的方式(@hostname,@ipaddress),需要远程机器的日志系统加上-r的启动方式。
具体方式是
1)查看/etc/services文件,看是否有下面一行
syslog 514/udp
如果没有,加上
2)修改/etc/sysconfig/syslog文件,修改或者增加下面折行
SYSLOGD_OPTIONS="-m 0 -r"
3)重启syslogd /etc/init.d/syslod restart