syslogd-记录日志文件的服务

在分析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打印机相关的信息
mail记录与邮件收发相关的信息
news记录与新闻服务器相关的信息
syslogsyslog本身产生的信息记录
user、uucp、local0~7与Unix like 机器本身有关的一些信息

 

<2>链接符号

“.”  代表比后面还要高的等级(含该等级)都被记录下来;

“.=” 代表所需要的等级就是后面接的等级而已,其他的不记录;

“.!” 代表不等于,即是除了该等级外的其他等级均记录;

 

 

<3>信息等级

同一个服务所产生的信息也是有差别的.基本上,syslog将信息分为7个主要的等级及2个特殊的等级.

依序是这样的:

等级等级说明说明
1info仅是一些基本的信息说明
2notice除了info外还需要注意的一些信息内容
3warning警告,可能有问题,但还不至于影响到某个daemon运行的信息
4err(error)重大的错误信息
5crit(critical)比error严重的错误信息
6alert警告,很严重的错误信息,比crit还要严重
7emerg(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

解析:使用”,”分隔时,那么等级只要接在最后一个即可!如果使用”;”来分隔的话,那么就需要将服务与等级都写上去.