Linux上的日志系统

       Linux上所用到的日志系统可以分为两种syslogsyslog-ng两种,syslog-ng是下一代升级版的日志系统。RedHat-5上用的是syslogRedHat-6上已经改为syslog-ng了,因为syslog-ng的功能要比syslog的功能大很多,虽然它们的格式差不多,但是差别很大,现在我们主要说的是syslog

       syslog是一个服务,它是专门用于记录日志的功能,可以为每个程

序负责记录日志,但也不是所有的都用syslogsyslog服务有两个进程

       1syslogd:系统,它是专门负责非内核所产生的日志信息。

       2klogd:内核,:专门负责内核所产生的日志信息。

日志系统配置文件定义格式为:kernel --> 物理内存(/dev/console) --> /var/log/dmesg

如果你写完日志之后,还想查看的话只需cat /var/log/dmesg就可以了

    日志需要滚动(日志切割):                          

        如:messages  messages.1  messages.2

      /var/log/messages:系统标准错误日志信息:非内核产生引导信息,  各子系统产生的信息

如下列脚本:

 #!/bin/sh

#

/usr/sbin/logrotate /etc/logrotate.conf

EXITVALUE=$?

if [ $EXITVALUE != 0 ]; then

    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"

fi

exit 0          

  /var/log/maillog:邮件系统产生的日志信息

          /var/log/secure:如图所下

  syslog进程: syslogdklogd的一些介绍

  配置文件定义格式为: facility(谁产生的日志).priority(哪个级别的日志) action (产生的日志怎么办)

 facility,可以理解为日志的来源或设备目前常用的facility有以下几种: 

    auth       认证相关的 

    authpriv   权限,授权相关的 

    cron       任务计划相关的 

    daemon     守护进程相关的 

    kern       内核相关的   

    lpr        # 打印相关的 

    mail       # 邮件相关的 

    mark       # 标记相关的 

    news       # 新闻相关的 

    security  安全相关的,auth 类似  

    syslog    # syslog自己的 

    user      # 用户相关的 

    uucp      # unix to unix cp 相关的 

    local0 到 local7  用户自定义使用 

    *         # *表示所有的facility 

 

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

    debug           # 程序或系统的调试信息 

    info            # 一般信息

    notice          # 不影响正常功能,需要注意的消息 

    warning/warn    # 可能影响系统功能,需要提醒用户的重要事件 

    err/error       # 错误信息 

    crit            # 比较严重的 

    alert           # 必须马上处理的 

    emerg/panic     # 会导致系统不可用的 

    *               # 表示所有的日志级别 

    none            # 相反,表示啥也没有 

     

 action(动作)日志记录的位置 

    系统上的绝对路径    普通文件 如: /var/log/xxx 

    |                   # 管道  通过管道送给其他的命令处理 

    终端              终端   如:/dev/console 

    @HOST               # 远程主机 如: @10.0.0.1      

    用户              系统用户 如: root 

    *                   # 登录到系统上的所有用户,一般emerg级别的日志是这样定义的 

定义格式例子: 

mail.info   /var/log/mail.log # 表示将mail相关的,级别为info及 

                              # info以上级别的信息记录到/var/log/mail.log文件中 

auth.=info  @10.0.0.1         # 表示将auth相关的,基本为info的信息记录到10.0.0.1主机上去 

                              # 前提是10.0.0.1要能接收其他主机发来的日志信息 

user.!=error                  # 表示记录user相关的,不包括error级别的信息 

user.!error                   # user.error相反 

*.info                        # 表示记录所有的日志信息的info级别 

mail.*                        # 表示记录mail相关的所有级别的信息 

*.*                           # 你懂的

cron.info;mail.info           # 多个日志来源可以用";" 隔开 

cron,mail.info                # cron.info;mail.info 是一个意思 

mail.*;mail.!=info            # 表示记录mail相关的所有级别的信息,但是不包括info级别的