Linux下日志系统详
1.linux系统上有两个日志服务syslog和syslog-ng
syslog服务有两个进程syslogd和klogd
syslogd: 系统产生的日志信息
klogd:内核产生的日志信息
klogd:在系统启动时内核产生日志输出至物理终端(/dev/console)并存放至/var/log/dmesg文件中
查看klogd产生的日志信息可通过 dmesg 和 cat /var/log/dmesg 命令查看
syslogd:在系统启动后,由各子系统产生日志并存放至
/var/log/messages: 除内核日志信息外大部分日志信息;
/var/log/maillog: 邮件系统产生的日志信息;
/var/log/secure: 安全相关的日志,如用户登入等
2.syslog配置文件在/etc/syslog.conf
输写格式为:日志来源.级别 存放路径
日志来源有以下几种:
auth # 认证
authpriv # 权限,授权
cron # 任务计划
daemon # 守护进程
kern # 内核
lpr # 打印
mail # 邮件
mark# 标记
news # 新闻
security # 安全
syslog # syslog本身
user # 用户
uucp # unix系统之间传送文件
local0 到 local7 # 用户自定义
*# 所有的日志来源
级别:以下从低至高
debug # 程序或系统调试信息
info # 普通信息
notice # 不影响正常功能,需要注意的消息
warning/warn# 可能影响系统功能,但需提醒用户的重要事件
err/error # 错误信息
crit # 比较严重的
alert # 必须立马处理
emerg/panic# 惊恐会导致系统崩溃
*# 表示所有日志级别
none # 跟* 相反,表示不显示
存放路径:
绝对路径 # 普通文件 如: /var/log/messages
|# 管道 通过管道送给其他的命令处理
终端 # 终端 如:/dev/console
@HOST # 远程主机 如: @172.16.1.1
用户 # 系统用户 如: root
* # 登录到系统上的所有用户,如emerg系统默认定义
3.举例说明:
mail.info /var/log/mail.log # 表示将mail级别为info及info以上级别的信息
auth.=info @172.16.1.1 # 表示将auth的info的信息记录到172.16.1.1主机 user.!=error /var/log/messages # 表示记录user相关的,不包括error级别的信息
user.!error /var/log/messages # 将user.error以下级别的信息
*.info /var/log/messages # 表示记录所有的日志信息的info级别
mail.* /var/log/mail.log # 表示记录mail所有级别的信息
*.*/var/all.log # 所有日志来源的所有级别信息
cron.info;mail.info //var/log/mail.log # 多个日志来源可以用";" 隔开
cron,mail.info /var/log/mail.log # 与cron.info;mail.info功能相同
mail.*;mail.!=info /var/log/mail.log # 表示mail除info级别外所有信息
4.日志需要滚动切割:当日志文件达到多大或多长时间进行切割,删除或创建
配置文件存放至/etc/logrotate.conf 且每天执行/etc/cron.daily/logrotate 计划任务
5.部署一个日志远程服务器:
/etc/rc.d/init.d/syslog服务脚本配置文件在/etc/sysconfig/syslog
vim /etc/sysconfig/syslog中将SYSLOGD_OPTIONS="-m 0" 改成SYSLOGD_OPTIONS="-m 0-r"