Linux上的日志系统 syslog syslog-ng:开源版
日志系统:syslog()
syslog服务: syslogd:系统,非内核产生的信息 klogd:内核,专门负责记录内核产生的日志信息
kernel-->物理终端(/dev/console)-->/var/log/dmesg
# dmesg # cat /var/log/dmesg
日志需要滚动: message messages.1 messages.2
/sbin/init /var/log/messages:系统标准日志信息:非内核产生引导信息,各子系统产生的信息 /var/log/maillog:邮件系统产生的日志信息 /var/log/secure:
syslog: syslogd klogd 配置文件:/etc/syslog.conf
信息详细程序:日志级别 子系统:facility,设备
动作:
配置文件定义格式为:facility.priority action
facility,可以理解为日志的来源或设备目前常用的facility有以下几种
auth #认证相关的 authpriv #权限,授权相关的 cron #任务计划相关的 daemon #守护进程相关的 kern #内核相关的 lpm #打印相关的 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 auth.-info @10.0.0.1 #标识将auth相关的,基本为info的信息记录到10.0.0.1主机上去 user.1-error #表示记录user相关的,不包括error级别的信息 user.!error #与user.error相反 *.info #标识记录mail相关的所有级别的信息 *.* # cron.info;mail.info #多个日志来源可以用;隔开 cron.mail.info #与cron.info;mail.info一个意思 mail.*;mail.!=info #表示记录mail相关的所有级别信息,但是不包括info级别的