在分析syslog之前,我们需要知道一点: centos6起/etc/syslog.conf不再有!而是/etc/rsyslog.conf代替!
- 日志文件的一般格式
一般来说,系统所产生的信息经过syslog而记录下来的数据中,每条信息均会记录下面几个重要数据:
#事件发生的日期与时间;
#发生此事件的主机名;
#启动此事件的服务名;或函数名称;
#该信息的实际数据内容;
- syslog配置文件:/etc/rsyslog.conf
基本上,syslog针对各种服务与信息记录在某些文件的配置文件就是/etc/rsyslog.conf,这个文件规定了”什么服务的什么等级信息以及需要被记录在哪里(设备或文件)”.
命令格式 :
服务名称 [.=!] 信息等级 信息记录的文件名或设备或主机
<1>服务名称
syslog本身有设置一些服务,你可以通过这些服务来存储系统的信息.
syslog设置的服务主要有:
| 服务类型 | 说明 |
| auth(authpriv) | 主要与认证有关的机制,例如login、ssh、su等需要账号/密码 |
| cron | 记录计划任务cron/at等日志信息 |
| daemon | 与各个daemon有关的信息 |
| kern | 记录内核(kernel)产生的信息 |
| lpr | 打印机相关的信息 |
| 记录与邮件收发相关的信息 | |
| news | 记录与新闻服务器相关的信息 |
| syslog | syslog本身产生的信息记录 |
| user、uucp、local0~7 | 与Unix like 机器本身有关的一些信息 |
<2>链接符号
“.” 代表比后面还要高的等级(含该等级)都被记录下来;
“.=” 代表所需要的等级就是后面接的等级而已,其他的不记录;
“.!” 代表不等于,即是除了该等级外的其他等级均记录;
<3>信息等级
同一个服务所产生的信息也是有差别的.基本上,syslog将信息分为7个主要的等级及2个特殊的等级.
依序是这样的:
| 等级 | 等级说明 | 说明 |
| 1 | info | 仅是一些基本的信息说明 |
| 2 | notice | 除了info外还需要注意的一些信息内容 |
| 3 | warning | 警告,可能有问题,但还不至于影响到某个daemon运行的信息 |
| 4 | err(error) | 重大的错误信息 |
| 5 | crit(critical) | 比error严重的错误信息 |
| 6 | alert | 警告,很严重的错误信息,比crit还要严重 |
| 7 | emerg(panic) | “疼痛”等级,意指系统已经几乎要死机的状态!通常硬件出现问题导致整个内核无法顺利运行,就会出现这样的等级 |
| 特 殊 | debug | 错误检测等级,需要做一些错误检测,应用该等级 |
| none | 忽略掉某些服务 |
<4>信息记录的文件名或设备或主机
通常,我们使用的都是文件,但是也可以输出设备,例如打印机之类的.
常见:
文件的绝对路径 : 通常放在/var/log目录下的文件;
打印机或其他 : 例如/dev/lp0这个打印机设备;
用户名称 : 显示给用户;
远程主机 : 例如www.vbird.tsai,当前也要对方主机也支持才行;
* : 代表目前在线的所有人;
- 常见实例
<1>如果我要将我的mail相关的数据写入/var/log/maillog当中,那么在/etc/rsyslog.conf的语法如何写呢?
基本的写法是这样的:
mail.info /var/log/maillog
解析:mail.info表示将高于info等级(含info等级)之上的信息,都会被写入后面接的文件中.也就是将所有的mail的日志信息都记录在/var/log/maillog中.
<2>将新闻组(news)与计划任务(cron)的信息都写入/var/log/cronnews文件中,而这两个程序的警告信息则额外记录在/var/log/cronnews.warn,那又该如何编辑rsyslog.conf呢?
写法:
news.*;cron.* /var/log/cronnews
news.=warn;cron.=warn /var/log/cronnews.warn
<3>messages这个文件记录所有的信息,但是就是不想记录cron、news以及mail的信息,该如何写呢?
写法:
*.*;news,cron,mail.none /var/log/messages
或者
*.*;news.none;cron.none;mail.none /var/log/messages
解析:使用”,”分隔时,那么等级只要接在最后一个即可!如果使用”;”来分隔的话,那么就需要将服务与等级都写上去.