Linux日志系统详解

 

一、日志系统简介
日志系统,用于记录系统启动及各子系统运行过程中产生的各种信息。
Linux上常用的日志系统:
syslog:rhel5系统上默认的(这里以syslog为例)
syslog-ng:syslog升级版,下一代日志服务器。
(Linux系统专门创建的负责统一记录各程序产生的信息,即为syslog)
 
日志系统定义一个日志信息:
1、根据记录信息的详细程度的不同,则定义了日志级别:priority
2、各子系统产生的信息,分开进行记录(即产生日志的子系统):facility
4、指定信息的记录及存储位置(称为动作):action
 
二、syslog的配置文件
syslog服务的两个进程(开机自启动):
           syslogd: 系统,负责记录非内核的其他设施产生的信息
           klogd:内核,专门负责记录内核产生的日志信息 (存放在/var/log/dmesg中)
  
  
  
  
  1. 日志系统的配置文件:/etc/syslog.conf  
  2. 格式如下:  
  3. facility.priority        action   
  4. 1)facility,可以理解为设施,日志的来源  
  5. 目前常用的facility有以下几种:   
  6.     auth       # 与认证相关的   
  7.     authpriv   # 与权限,授权相关的   
  8.     cron       # 与任务计划相关的   
  9.     daemon     # 与守护进程相关的   
  10.     kern       # 与内核相关的   
  11.     lpr       # 与打印相关的   
  12.     mail      # 与邮件相关的   
  13.     mark      # 与标记相关的   
  14.     news      # 与新闻组相关的   
  15.     security  # 与安全相关的,与auth 类似    
  16.     syslog     # syslog自己的   
  17.     user       # 与用户相关的   
  18. uucp       # 与unix to unix cp 相关的   
  19.     local0 到 local7  # 用户自定义使用   
  20.     *         # *表示所有的facility   
  21. 2)priority(log level)日志级别,(级别越低,记录的信息越详细):  
  22. 一般有以下几种级别(从低到高)   
  23.     debug           # 程序或系统的调试信息   
  24.     info             # 一般信息  
  25.     notice           # 不影响正常功能,需要注意的消息   
  26.     warning/warn     # 可能影响系统功能,需要提醒用户的重要事件   
  27.     err/error        # 错误信息   
  28. crit            # 比较严重的   
  29.     alert            # 必须马上处理的   
  30.     emerg/panic      # 会导致系统不可用的   
  31.     *                # 表示所有的日志级别   
  32.     none             # 跟* 相反,表示啥也没有   
  33.        
  34.  (3)action(动作)日志记录的位置   
  35.     系统上的绝对路径  # 普通文件 如: /var/log/xxx   
  36.     |                  # 管道  通过管道送给其他的命令处理   
  37.     终端              # 终端   如:/dev/console   
  38.     @HOST           # 远程主机 如: @10.0.0.1        
  39.     用户              # 系统用户 如: root   
  40. *                 # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的  
  41.    
  42. 定义格式例子:   
  43. mail.info   /var/log/mail.log     # 表示与mail相关的,级别为info及其以上级别的日志信息 记录到/var/log/mail.log文件中   
  44. auth.=info  @10.0.0.1         # 表示与auth相关的,只记录info级别的日志信息记录到 10.0.0.1主机上去 前提是10.0.0.1要能接收其他主机发来的日志信息   
  45. user.!=error                  # 表示记录user相关的,不包括error级别的日志信息   
  46. user.!error                   # 表示与user相关的,只记录比error级别低的日志信息   
  47. *.info                        # 表示记录所有的日志信息的info级别及其以上级别  
  48. mail.*                        # 表示记录mail子系统产生的的所有级别的信息   
  49. *.*                           # 所有级别的信息  
  50. cron.info;mail.info           # 多个日志来源可以用";" 隔开   
  51. cron,mail.info                # 与cron.info;mail.info 是一个意思 (级别相同时可这样用)  
  52. mail.*;mail.!=info          # 表示记录mail相关的所有级别的信息,但是不包括info级别的   
  53. 编辑修改/etc/syslog.conf文件后,可使用下面命令不重启服务,重读配置文件:  
  54. # service syslog reload  
 
三、查看日志信息
1、查看启动init程序之前内核产生的日志信息:
# dmesg
# cat /var/log/dmesg
2、查看系统标准错误日志信息;非内核产生的引导信息;各系统产生的信息:
# cat /var/log/messages
【由于/var/log/messages文件中存放的日志信息较多,因此,日志需要滚动或日志切割,即隔段时间日志能重新命名为/var/log/mesage1 ... 依次类推】
系统上专门负责完成日志切割的一个程序:logrotate (滚动,压缩,发送系统日志)
根据/etc/cron.daily/logrotate以及/etc/logrotate.conf两个文件完成日志滚动。
在/etc/logrotate.d/目录下,存放了各个子系统的日志滚动机制
3、查看邮件系统产生的日志信息
# cat /var/log/maillog
4、查看用户登录是产生的登录信息(用户名,密码,尝试登录过几次)
# /cat /var/log/secure
 
以上即为linux rhel5中syslog日志系统的介绍,我们可根据其功能很好的实现排错等应用。

你可能感兴趣的:(linux)