http://blog.chinaunix.net/uid-17240700-id-2813887.html
LINUX保存了系统中所发生事件的详细记录,这些记录称作日志文件或消息文件.可以查阅日志文件来确定系统当前状态,观察入侵者踪迹,寻找某特定程序(或事件)相关的数据.
syslogd与klogd(监控linux内核提交的消息)守护进程负责记录,发送系统或工具产生的信息,二者的配置文件都是/etc/syslog.conf. 当系统内核或工具产生信息时,通过调用相关函数将信息发送到syslogd或klogd守护进程.syslogd与klogd守护进程会根据/etc/syslog.conf中的配置信息,对消息的去向作出处理.
syslogd与klogd(监控linux内核提交的消息)守护进程负责记录,发送系统或工具产生的信息,二者的配置文件都是/etc/syslog.conf. 当系统内核或工具产生信息时,通过调用相关函数将信息发送到syslogd或klogd守护进程.syslogd与klogd守护进程会根据/etc/syslog.conf中的配置信息,对消息的去向作出处理.
说明:
syslog.conf是syslogd进程的配置文件,将在程序启动时读取,默认位置是/etc/syslog.conf.这个配置文件中的空白行和以"#"开头的行将被忽略."facility.level"部分也被称为选择符(seletor). seletor和action之间使用一个或多个空白分隔.它指定了一系列日志记录规则.规则的格式如下:
seletor(facility.level) action
syslog.conf是syslogd进程的配置文件,将在程序启动时读取,默认位置是/etc/syslog.conf.这个配置文件中的空白行和以"#"开头的行将被忽略."facility.level"部分也被称为选择符(seletor). seletor和action之间使用一个或多个空白分隔.它指定了一系列日志记录规则.规则的格式如下:
seletor(facility.level) action
选择符(seletor)(选择符由 facility 和 level 两部分组成,之间用一个句点(.)连接)
void openlog(const char *ident, int option, intfacility);
void syslog(intpriority, const char *format, ...);
A.facility 指定了产生日志的子系统,可以是下面的关键字之一:
关键字 值 解释
kern 0 内核信息,首先通过 klogd 传递.
user 1 由用户程序生成的信息.
mail 2 与电子邮件有关的信息.
daemon 3 与 inetd 守护进程有关的信息.
auth 4 由 pam_pwdb 报告的认证活动.
syslog 5 由 syslog 生成的信息.
lpr 6 与打印服务有关的信息.
news 7 来自新闻服务器的信息.
uucp 8 由 uucp 生成的信息.(uucp = unix to unix copy)
cron 9 与 cron 和 at 有关的信息.
authpriv 10 包括私有信息(如用户名)在内的认证活动
ftp 11 与 FTP 有关的信息.
12-15 系统保留
local0 ~ local7 16-23 由自定义程序使用,例如使用 local5 做为 ssh 功能
mark syslog内部功能用于生成时间戳.
* 通配符代表除了 mark 以外的所有功能
在大多数情况下,任何程序都可以通过任何facility发送日志消息,但是一般都遵守约定俗成的规则.比如,只有内核才能使用"kern"facility.
B.level指定了消息的优先级,可以是下面的关键字之一(降序排列,严重性越来越低):
关键字 值 解释
emerg 0 系统不可用
alert 1 需要立即被修改的条件
crit 2 (临界)阻止某些工具或子系统功能实现的错误条件
err 3 阻止工具或某些子系统部分功能实现的错误条件
warning 4 预警信息
notice 5 具有重要性的普通条件
info 6 提供信息的消息
debug 7 不包含函数条件或问题的其他信息
none (屏蔽所有来自指定设备的消息)没有优先级,通常用于排错
* 除了none之外的所有级别
facility部分可以是用逗号(,)分隔的多个子系统,而多个seletor之间也可以通过分号(;)组合在一起.
注意:多个组合在一起的选择符,后面的会覆盖前面的,这样就允许从模式中排除一些优先级.
默认将对指定级别以及更严重级别的消息进行操作,但是可以通过下面2个操作符进行修改.
等于操作符(=)表示仅对这个级别的消息进行操作,不等操作符(!)表示忽略这个级别以及更严重级别的消息.这两个操作符可以同时使用,不过"!"必须出现在"="的前面.
关键字 值 解释
emerg 0 系统不可用
alert 1 需要立即被修改的条件
crit 2 (临界)阻止某些工具或子系统功能实现的错误条件
err 3 阻止工具或某些子系统部分功能实现的错误条件
warning 4 预警信息
notice 5 具有重要性的普通条件
info 6 提供信息的消息
debug 7 不包含函数条件或问题的其他信息
none (屏蔽所有来自指定设备的消息)没有优先级,通常用于排错
* 除了none之外的所有级别
facility部分可以是用逗号(,)分隔的多个子系统,而多个seletor之间也可以通过分号(;)组合在一起.
注意:多个组合在一起的选择符,后面的会覆盖前面的,这样就允许从模式中排除一些优先级.
默认将对指定级别以及更严重级别的消息进行操作,但是可以通过下面2个操作符进行修改.
等于操作符(=)表示仅对这个级别的消息进行操作,不等操作符(!)表示忽略这个级别以及更严重级别的消息.这两个操作符可以同时使用,不过"!"必须出现在"="的前面.
动作(action)
动作确定了syslogd与klogd守护进程将日志消息发送到什么地方去.有以下几种选择:
普通文件 使用文件的绝对路径来指明日志文件所在的位置,例如:/var/log/cron.
终端设备 终端可以是/dev/tty0~/dev/tty6,也可以为/dev/console.
用户列表 例如动作为“root hackbutter”,将消息写入到用户root与hackbutter的计算机屏幕上.
远程主机 将信息发往网络中的其他主机的syslogd守护进程,格式为 “@hostname”.
动作确定了syslogd与klogd守护进程将日志消息发送到什么地方去.有以下几种选择:
普通文件 使用文件的绝对路径来指明日志文件所在的位置,例如:/var/log/cron.
终端设备 终端可以是/dev/tty0~/dev/tty6,也可以为/dev/console.
用户列表 例如动作为“root hackbutter”,将消息写入到用户root与hackbutter的计算机屏幕上.
远程主机 将信息发往网络中的其他主机的syslogd守护进程,格式为 “@hostname”.
配置文件的语法说明
(1) *用作设备或优先级时,可以匹配所有的设备或优先级.
(2) *用作动作时,将消息发送给所有的登录用户.
(3) 多个选择器可在同一行中,并使用分号分隔开,且后面的会覆盖前面的.如,uucp,news.crit.
(4) 关键字none用作优先级时,会屏蔽所有来自指定设备的消息.
(5) 通过使用相同的选择器和不同的动作,同一消息可以记录到多个位置.
(6) syslog.conf文件中后面的配置行不会覆盖前面的配置行,每一行指定的动作都独立的运作.
(1) *用作设备或优先级时,可以匹配所有的设备或优先级.
(2) *用作动作时,将消息发送给所有的登录用户.
(3) 多个选择器可在同一行中,并使用分号分隔开,且后面的会覆盖前面的.如,uucp,news.crit.
(4) 关键字none用作优先级时,会屏蔽所有来自指定设备的消息.
(5) 通过使用相同的选择器和不同的动作,同一消息可以记录到多个位置.
(6) syslog.conf文件中后面的配置行不会覆盖前面的配置行,每一行指定的动作都独立的运作.
实例详解:
//将info或更高级别的消息送到/var/log/messages,除了mail,authpriv,cron以外.
//其中*是通配符,代表任何设备;none表示不对任何级别的信息进行记录.
*.info;mail.none;authpriv.none;cron.none /var/log/messages
//将info或更高级别的消息送到/var/log/messages,除了mail,authpriv,cron以外.
//其中*是通配符,代表任何设备;none表示不对任何级别的信息进行记录.
*.info;mail.none;authpriv.none;cron.none /var/log/messages
//将mail设备中的任何级别的信息记录到/var/log/maillog文件中,这主要是和电子邮件相关的信息.
mail.* -/var/log/maillog
//将authpirv设备的任何级别的信息记录到/var/log/secure文件中,这主要是一些和权限使用相关的信息.
authpriv.* /var/log/secure
mail.* -/var/log/maillog
//将authpirv设备的任何级别的信息记录到/var/log/secure文件中,这主要是一些和权限使用相关的信息.
authpriv.* /var/log/secure
//将cron设备中的任何级别的信息记录到/var/log/cron文件中,这主要是和系统中定期执行的任务相关的信息.
cron.* /var/log/cron
cron.* /var/log/cron
//将任何设备的emerg(系统不可用)级别的信息发送给所有正在系统上的用户.
*.emerg *
*.emerg *
//将uucp和news设备的crit(临界)级别的信息记录到/var/log/spooler文件中.
uucp,news.crit /var/log/spooler
uucp,news.crit /var/log/spooler
//将和系统启动相关的信息记录到/var/log/boot.log文件中.
local7.* /var/log/boot.log
local7.* /var/log/boot.log
//例如增加将和防火墙相关的发给fw.log
local3.* /var/log/fw.log