日志生成控制文件syslog.conf
1: syslog.conf的介绍
对于不同类型的Unix,标准UnixLog系统的设置,实际上除了一些关键词的不同,系统的syslog.conf格式是相同的。syslog采用可配置的、统一的系统登记程序,随时从系统各处接受log请求,然后根据/etc/syslog.conf中的预先设定把log信息写入相应文件中、邮寄给特定用户或者直接以消息的方式发往控制台。值得注意的是,为了防止入侵者修改、删除messages里的记录信息,可以采用用打印机记录或采用方式来挫败入侵者的企图。
syslogd与klogd(监控linux内核提交的消息)守护进程负责记录,发送系统或工具产生的信息,二者的配置文件都是/etc/syslog.conf.当系统内核或工具产生信息时,通过调用相关函数将信息发送到syslogd或klogd守护进程.syslogd与klogd守护进程会根据/etc/syslog.conf中的配置信息,对消息的去向作出处理
2: syslog.conf的格式
可以参考man [5] syslog.conf。这里是对syslog.conf的简单介绍。
/etc/syslog.conf文件中的一项配置记录由“选项”(selector)和“动作”(action)两个部分组成,两者间用tab制表符进行分隔(使用空格间隔是无效的)。而“选项”又由一个或多个形如“类型.级别”格式的保留字段组合而成,各保留字段间用分号分隔。如下行所示:
类型.级别 [;类型.级别] `TAB` 动作
2.1 类型
保留字段中的“类型”代表信息产生的源头,可以是:
auth 认证系统,即询问用户名和口令
cron 系统定时系统执行定时任务时发出的信息
daemon 某些系统的守护程序的syslog,如由in.ftpd产生的log
kern 内核的syslog信息
lpr 打印机的syslog信息
mail 邮件系统的syslog信息
mark 定时发送消息的时标程序
news 新闻系统的syslog信息
user 本地用户应用程序的syslog信息
uucp uucp子系统的syslog信息
local0..7 种本地类型的syslog信息,这些信息可以又用户来定义
* 代表以上各种设备
2.2 级别
保留字段中的“级别”代表信息的重要性,可以是:
emerg 紧急,处于Panic状态。通常应广播到所有用户;
alert 告警,当前状态必须立即进行纠正。例如,系统数据库崩溃;
crit 关键状态的警告。例如,硬件故障;
err 其它错误;
warning 警告;
notice 注意;非错误状态的报告,但应特别处理;
info 通报信息;
debug 调试程序时的信息;
none 通常调试程序时用,指示带有none级别的类型产生的信息无需送出。如*.debug;mail.none表示调试时除邮件信息外其它信息都送出。
2.3 动作
动作(action)
动作确定了syslogd与klogd守护进程将日志消息发送到什么地方去.有以下几种选择:
普通文件 使用文件的绝对路径来指明日志文件所在的位置,例如:/var/log/cron.
终端设备 终端可以是/dev/tty0~/dev/tty6,也可以为/dev/console.
用户列表 例如动作为“root hackbutter”,将消息写入到用户root与hackbutter的计算机屏幕上.
远程主机 将信息发往网络中的其他主机的syslogd守护进程,格式为“@hostname”. @符号后面可以是ip,也可以是域名,默认在/etc/hosts文件下loghost这个别名已经指定给了本机。
user1,user2 指定用户。如果指定用户已登录,那么他们将收到信息;
* 所有用户。所有已登录的用户都将收到信息。
3: 具体实例
我们来看看/etc/syslog.conf文件中的实例:
NTP-SERVER:/#vi /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
将info或更高级别的消息送到/var/log/messages,除了mail,authpriv,cron以外.
//其中*是通配符,代表任何设备;none表示不对任何级别的信息进行记录.
# 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 *
//将任何设备的emerg(系统不可用)级别的信息发送给所有正在系统上的用户.
# Save news errors of level crit and higher in a special file.
# 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
//将和系统启动相关的信息记录到/var/log/boot.log文件中.
配置文件的语法说明
(1) *用作设备或优先级时,可以匹配所有的设备或优先级.
(2) *用作动作时,将消息发送给所有的登录用户.
(3) 多个选择器可在同一行中,并使用分号分隔开,且后面的会覆盖前面的.如,uucp,news.crit.
(4) 关键字none用作优先级时,会屏蔽所有来自指定设备的消息.
(5) 通过使用相同的选择器和不同的动作,同一消息可以记录到多个位置.
(6) syslog.conf文件中后面的配置行不会覆盖前面的配置行,每一行指定的动作都独立的运作.