①、linux上日志系统类型:syslog和syslog-ng(开源版和商业版)

     1、syslog服务:
       syslogd:系统日志,非内核产生的信息
    配置文件:/etc/syslog.conf、
    配置以后利用service syslog reload(不用重启服务读取配置文件)
    日志服务器配置:etc/sysconfig/syslog内SYSLOGD_OPTIONS="-m 0"改为SYSLOGD_OPTIONS="-r -m 0"即可作为日志服务器
   
    klogd:内核日志,专门负责内核产生的信息
    kernel启动的时候是物理终端(/dev/console),产生的日志信息在/var/log/dmesg
    dmesg命令:可以直接查看/var/log/dmesg;也可以使用cat /var/log/dmesg查看。
         sbin/init进程信息属于系统日志,放在以下位置:
    /var/log/messages:系统标准错误日志信息,非内核产生的引导信息;各子系统产生的信息。
     /var/log/maillog:邮件系统产生的日志信息
     /var/log/secure:用户登陆信息日志
     2、日志需要滚动:
      message一段时间以后重新命名为message1..,然后新建一个message来存放日志。
   logrotate:通过此命令对日志文件进行切片
   /etc/cron.daily/logrotate
  
 配置文件:/etc/syslog.conf
    
 配置文件定义格式为: facility.priority  action
 facility,可以理解为日志的来源或设备目前常用的facility有以下几种: 

 
  1. auth         # 认证相关的   
  2.  authpriv     # 权限,授权相关的   
  3.  cron         # 任务计划相关的   
  4.  daemon       # 守护进程相关的   
  5.  kern         # 内核相关的   
  6.  lpr          # 打印相关的   
  7.  mail         # 邮件相关的   
  8.  mark         # 标记相关的   
  9.  news         # 新闻相关的   
  10.  security     # 安全相关的,与auth 类似    
  11.  syslog       # syslog自己的   
  12.  user         # 用户相关的   
  13.  uucp         # unix to unix cp 相关的   
  14.  local0 到 local7  # 用户自定义使用   
  15.  *            # *表示所有的facility  

 

 priority(log level)日志的级别,一般有以下几种级别(从低到高) 
    

 
  1. debug           # 程序或系统的调试信息   
  2.  info            # 一般信息  
  3.  notice          # 不影响正常功能,需要注意的消息   
  4.  warning/warn    # 可能影响系统功能,需要提醒用户的重要事件   
  5.  err/error       # 错误信息   
  6.  crit            # 比较严重的   
  7.  alert           # 必须马上处理的   
  8.  emerg/panic     # 会导致系统不可用的   
  9.  *               # 表示所有的日志级别   
  10.  none            # 跟* 相反,表示啥也没有   

     

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

 定义格式例子:

 

 
  1. mail.info   /var/log/mail.log # 表示将mail相关的,级别为info及info以上级别的信息记录到/var/log/mail.log文件中   
  2. auth.=info  @10.0.0.1         # 表示将auth相关的,基本为info的信息记录到10.0.0.1主机上去   
  3.                               # 前提是10.0.0.1要能接收其他主机发来的日志信息   
  4. user.!=error                  # 表示记录user相关的,不包括error级别的信息   
  5. user.!error                   # 与user.error相反   
  6. *.info                        # 表示记录所有的日志信息的info级别   
  7. mail.*                        # 表示记录mail相关的所有级别的信息   
  8. *.*                           # 你懂的.   
  9. cron.info;mail.info           # 多个日志来源可以用";" 隔开   
  10. cron,mail.info                # 与cron.info;mail.info 是一个意思   
  11. mail.*;mail.!=info            # 表示记录mail相关的所有级别的信息,但是不包括info级别的