Linux|系统管理|WEB开发

关注Linux,系统管理,WEB开发以及开源世界

Linux日志系统

| Comments

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

Comments