syslogd守护进程介绍:

在同一时间会发生许许多多的事情,而在终端窗口中断开连接的网络服务就更是如此了。因此,提供一个记录特殊事件和消息的标准机制就非常有必要了。linux使用syslogd守护进程来提供这个服务。

syslogd守护进程提供了一个对系统活动和消息进行记录的标准方法。许多其他种类的Unix操作系统也使用了兼容的守护进程。这就提供了一个在网络中跨平台记录的方法。在大型的网络环境里,这更具有价值。

syslogd保存数据用的记录文件都是简明的文本文件,一般都存放在/var/log子目录中。每个数据项构成一行,包括日期、时间、主机名、进程名、进程的PID,以及来自该进程的消息。标准C函数库中的一个全局性的函数提供了生成记录消息的简单机制。如果不喜欢编写程序代码,但是又想在记录文件中生成数据项,可以选择使用Logger命令。可以想象,像syslogd这样重要的工具应该是作为开机引导命令脚本程序的一部分来启动的。你准备在服务器环境中使用的任何一个linux发行版本都已经为你设置好了。

1.调用syslogd

如果需要手动启动syslogd,或者需要修改开机引导时启动它的命令脚本程序,你就必须注意syslogd的命令行参数,请大家参看有关书籍,这里不做详细介绍。

2./etc/syslog.conf文件

/etc/syslog.conf文件包含了syslogd需要运行的配置信息。这个文件的格式有些不寻常,但是现有的缺省配置文件将足以满足使用需要了,除非你需要在特定的文件中查找特定的信息,或者需要把这些信息发送到远程记录计算机去。

记录信息分类

在我们掌握/etc/syslog.conf文件格式本身之前,需要先了解记录消息是如何分类的。每个消息都有一个功能值(Facility)和一个优先权值(Priority)。功能值告诉我们这条消息是由哪个子系统产生的,而优先权值则告诉我们这个消息有多重要。这两个值由句号分隔而且都有等价的字符串,从而容易记忆。

/etc/syslog.conf文件的格式

下面是配置文件里各语句的格式:

facility/priority combinations separated by commas file

/process/host to log to

举例如下:

kern.info /ver/log/kerned

syslogd还可以灵活地把记录消息发送到多种不同的保存目的地去。它可以把消息保存为文件、把消息发送到FIFO队列、发送到一组用户、或者(在大型站点集中记录消息的情况下)发送到一个中心记录主机中。为了区分这些目的地,在目的地入口使用了下面的规则:

1. 如果保存目的地的开始字符是斜杠字符(/),消息将发送到某个文件。

2.如果保存目的地的开始字符是垂直字符(|),消息将发送到某个FIFO队列。

3. 如果保存目的地的开始字符是“@”字符,消息将发送到某个主机。


syslogd守护进程配置文件说明

syslogd守护进程根据/etc/syslog.conf中的配置信息实现消息转发和处理。下面是该配置文件的具体信息:

# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages# The authpriv file has restricted access.
authpriv.* /var/log/secure# Log all the mail messages in one place.
mail.* -/var/log/maillog# Log cron stuff
cron.* /var/log/cron# Everybody gets emergency messages
*.emerg *# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler# Save boot messages also to boot.log
local7.* /var/log/boot.log

在syslog.conf文件中以#开头的是注释行,配置行的语法格式为:[消息类型][TAB分隔符][处理方案]。

1.消息类型
消息类型包括facility和level两个部分,这两个部分以“.”隔开,如:
mail.*                                                  -/var/log/maillog

表示facility为mail,而level是所有级别。处理方案是将消息记录在/var/log/maillog日志文件中。表
8.2所示为facility可以使用的字段。
表8.2   facility字段

 

facility取值

说    明

kern

0

内核日志信息

user

1

用户日志信息

mail

2

邮件系统日志信息

daemon

3

系统守护进程日志信息

auth

4

安全管理日志信息

syslog

5

syslogd守护进程的日志信息

lpr

6

打印服务日志信息

news

7

新闻组服务日志信息

uucp

8

uucp系统日志信息

cron

9

守护进程cron的日志信息

authpriv

10

私有的安全管理日志信息

ftp

11

ftp守护进程

 

 

facility取值

说    明

 

12~15

系统保留

local0~local7

16~23

保留给系统本地使用

 

level给出的级别代表着信息的重要性,表8.3所示为level中的级别信息。

表8.3   level字段

level取值

说    明

emerg

0

系统不可用,出现这一情况的话,应该通知所有用户,因为这表示系统出现了严重的问题

alert

1

警告事件,必须立即采取行动纠正的事件

crit

2

关键事件,例如硬件出现故障

err

3

其他错误事件

warning

4

警告事件

notice

5

应该注意的事件,需要特别处理

info

6

通报信息

debug

7

调试程序时产生的信息

 

在syslog.conf中,可以使用*表示任何facility和任意的level。通过指定facility和level的取值,可以使facility在大于或等于该优先级的时候才记录相关日志信息。对于level,还可以使用none参数,表示不包含任何优先级别。例如,*.*表示任何facility的任何优先级的信息。*.emerg表示任何facility的大于或高于emerg优先级的信息。

2.处理方案
处理方案中指定的字段可以为如下的内容。
 
普通文件:使用文件的绝对路径来指明日志文件所在位置。
 
管道文件:在syslogd中支持使用管道文件(FIFO),在管道文件路径名前加“|”,表示将所得信息写入管道中。
 
终端设备:通过将信息写入/dev/console中,可以在终端显示相关信息。
 
其他主机:syslogd支持将信息发往网络中的其他主机的syslogd守护进程,以实现集中管理,格式为​​​“@hostname​​​”。
 
用户列表:syslogd守护进程支持将日志信息发给某些指定的用户。
 
所有登录用户:可以用*表示所有登录的用户。在获得日志信息时,syslogd守护进程会自动将信息发送给登录用户。

下面选取前面给出的syslog.conf中的一条配置来解释其意义。具体配置如下:
cron.*                                                  /var/log/cron

配置中的facility为cron,表示记录守护进程cron的信息。level为*,表示记录所有优先级别的信息,并将日志信息记录到/var/log/cron文件中。