Linux的系统日志主要由系统守护进程syslogd产生。默认情况下,syslogd在系统引导时就启动运行了。系统日志文件中记录什么类型的信息以及保存在什么地方通常都是由配置文件syslog.conf决定的。
syslog.conf配置文件位于/etc/syslog.conf,配置文件中的空行和以符号”#”开头的行都是无效行,应用时,会被忽略掉,有用的配置行的基本格式为:
记录信息的类型.优先级 日志文件的位置
根据系统记录信息的不同分为不同的类别,并具不同类别的重要程度产生了应用的优先级。
信息类别 | 说明 |
Authpriv | 用户登录系统的信息,包括系统管理员和普通用户 |
Cron | 定时器信息 |
Daemon | 各种常驻服务程序 |
Kern | 系统内核的状态信息 |
local7 | 启动时系统引导的信息 |
Lpr | 打印命令的信息 |
| 电子邮件的信息 |
News | 新闻服务区的信息 |
User | 用户相关的信息 |
Uucp | UNIX-to-UNIX Copy Protocol的信息 |
优先级 | 说明 |
emerg | 即emergency,紧急信息,例如因系统死机而无法使用 |
alert | 警报信息,即需要立即进行处理的情况 |
crit | 即critical,临界信息,系统处于事故前的临界点 |
err | 错误信息,系统发生的一般故障 |
warn | Warning, 警告信息 |
notice | 提醒信息 |
info | 一般信息 |
debug | 调试信息 |
* | 记录全部信息 |
none | 不记录任何信息 |
配置行中可以包含若干个”记录信息的类型.优先级”对,各个对之间要使用分号隔开;但是具有相同优先级的多个记录类型之间可以使用逗号分隔。当在配置行中指定一个优先级时,syslogd通常会记录具有该优先级的信息以及具有比该优先级更高的优先级信息。
下面对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!
//下面这行表示指定把所有优先级高于”一般信息”的事件信息都记录在/var/log/messages文件中,但是不包括电子邮件,新闻服务,登录系统和cron守护进程的信息
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
下面这行表示与登录系统有关的信息都记录在/var/log/secure文件中
authpriv.* /var/log/secure
# Log all the mail messages in one place.
//下面这行表示将与电子邮件有关的信息都记录在/var/log/maillog文件中
mail.* -/var/log/maillog
# Log cron stuff
//下面这行表示与cron守护进程相关的信息都记录在/var/log/cron中
cron.* /var/log/cron
# Everybody gets emergency messages
//表示当出现各种类型的紧急信息时,让所有用户都能收到
*.emerg *
# Save news errors of level crit and higher in a special file.
//该配置行表示把所有优先级等于或高于临界信息,而且与uucp和新闻服务器相关的信息都记录在/var/log/spooler文件中
uucp,news.crit /var/log/spooler
//下面这配置行表示把启动时系统引导的信息保存在/var/log/boot.log文件中
local7.* /var/log/boot.log
注意:syslogd生成的日志文件可能会增长的非常大,从而占用大量的磁盘空间,因而要注意对日志文件进行管理,把一些不重要和过期的日志文件删除掉。