> Linux教程 > linux基础 >

深入linux日志系统syslogd与klogd详解

syslogd;专门记录非内核的其他设施所产生的日志;当系统的控制权 由内核转交给init的时候,这时候的日志信息的记录由syslog记录 
klogd:内核 主要负责内核所产生的日志当系统启动完成之后就会 
由klogd进程记录控制并把这些内容记录在/var/log/dmesg中

查看命令
 

# dmesg(专门负责打开var/log/dmesg文件,并显示出来的 
# cat命令也可以查看

相关文件存放日志信息类型介绍
var/log/dmesg:存放的是内核产生的日志信息,即启动init程序之前产生的日志信息 
/var/log/messages:系统标准错误日志信息;非内核产生的引导信息大多数的子系统所产生的日志信息都会记录到这里 
/var/log/maillog:存放由邮件系统产生的日志信息; 
/var/log/secure:存放与安全有关的日志信息,里面记录了用户正确或错误登录系统的详细的私密信息
只有管理员才能查看;

日志级别介绍
 

priority(log level)日志的级别,一般有以下几种级别(从低到高)    
debug           # 程序或系统的调试信息【级别越低,记录的日志越详细,同时会导致硬盘工作超负荷 
info            # 一般信息   
notice          # 不影响正常功能,需要注意的消息    
warning/warn    # 可能影响系统功能,需要提醒用户的重要事件    
err/error       # 错误信息    
crit            # 比较严重的 【相当于发出蓝色警报】   
alert           # 必须马上处理的 【相当于发出橙色警报】   
emerg/panic     # 会导致系统不可用的 【相当于发出红色警报】   
*               # 表示所有的日志级别    
none            # 跟* 相反,表示什么也不记录 
facility(可以理解为产生日志的来源)经常用的总结如下
 auth                 # 认证相关的    
 authpriv             # 权限,授权相关的    
 cron                 # 任务计划相关的    
 daemon               # 守护进程相关的 比如:httpd 工作在后台的   
 kern                 # 内核相关的    
 lpr                  # 打印相关的    
 mail                 # 邮件相关的    
 mark                 # 标记相关的    
 news                 # 新闻相关的    
 security             # 安全相关的,与auth 类似     
 syslog               # syslog自己的    
 user                 # 用户相关的    
 uucp                 # unix to unix cp 相关的    
 local0 到 local7     # 用户自定义使用    
 *                    # *表示所有的facility    
action(可以理解为对日志的处理办法)

系统上的绝对路径  
# 普通文件 如: /var/log/xxx    
|              # 管道  通过管道送给其他的命令处理    
终端           # 终端   如:/dev/console    
@HOST          # 远程主机 如: @10.0.0.1         
用户           # 系统用户 如: root    
*              # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的 

格式示例的详解
 

复制代码代码示例:
mail.info   /var/log/mail.log # 表示将mail相关的,级别为info及以上级别的信息记录到/var/log/mail.log文件中  
auth.=info  @172.16.0.1       # 表示将auth相关的,只是把info级别的信息记录到10.0.0.1主机上去  
user.!=error                  # 表示记录user相关的,除了error级别外的信息  
user.!error                   # 比error低的级别信息  
*.info                        # 所有可能产生日志信息的子系统的info级别及其以上级别信息 
mail.*                        # mail子系统产生的所有日志信息 
*.*                           # 记录所有的日志信息的所有级别的日志信息  
cron.info;mail.info           # 记录多个日志系统信息,中间用“;”隔开 
cron,mail.info                # 意思同上  
mail.*;mail.!=info            # 记录mail相关的所有级别的信息,但是不包括info级别的  
对/etc/logrotate.conf配置文件的分析
# see "man logrotate" for details   
# rotate log files weekly   
weekly       (意思是每周更新一次日志文件)   
  
# keep 4 weeks worth of backlogs   
rotate 4     (定义保留4个版本,超出这个定义的数就会被清除)    
# create new (empty) log files after rotating old ones   
create       (滚动结束之后,生成新的一个空的日志文件)   
  
# uncomment this if you want your log files compressed   
#compress   
  
# RPM packages drop log rotation information into this directory   
include /etc/logrotate.d     (日志文件同时还依赖于这个文件,在/etc/logrotate.d中为每个文件定义一个子系统的日志滚动机制)   
# no packages own wtmp -- we'll rotate them here   
/var/log/wtmp {              (指定一个日志文件)  
    monthly                (按月滚动,以这个日志文件定义的滚动时间为主,如果全局定义了,这个没定义,以全局为主) 
    minsize 1M               (最小为1M)  
    create 0664 root utmp    (创建一个新的文件,权限为0664,属主为root,日志文件名为utmp )  
    rotate 1                 (保留1个历史版本)   
}   
/var/log/btmp {   
    missingok   
    monthly   
    minsize 1M   
    create 0600 root utmp   
    rotate 1   
}

对/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   
(除了mail,authpriv,cron之外所有facility产生的info以及info以上的级别都放在/var/llog/messages) 
# The authpriv file has restricted access.   
authpriv.*                                              /var/log/secure   
跟用户授权相关的所有级别都记录在/var/log/secure文件中   
# Log all the mail messages in one place.   
mail.*                                                  -/var/log/maillog   
(与邮件相关的所有级别都记录在/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,news.crit                                          /var/log/spooler   
(在uucp和news相关的crit和crit以上级别记录在/var/log/spooler文件中)  
# Save boot messages also to boot.log   
local7.*                                                /var/log/boot.log   
(用户自定义的跟引导相关的所有级别都记录在/var/log/boot.log文件中)
(责任编辑:IT)