三类日志子系统:
1、 连接时间日志:记录写入到/var/log/wtmp、/var/run/utmp中,login程序更新wtmp、utmp文件,使系统管理员跟踪谁在何时登录到系统
2、 进程统计: 由内核执行,当一个进程终止时为每个进程在统计进程文件(pacct、acct)中写入一条记录,为系统中基本服务提供命令使用统计。
3、错误日志: /var/adm/messages、/var/log/syslog
日志架构(linux也类似)
源(守护进程、内核、用户进程、程序、logger命令)---》syslog守护进程(配置文件/etc/syslog.conf)---》产生各个日志并写入日志文件
命令:logger 、 logadm
进程:/usr/sbin/syslogd 默认配置文件:/etc/syslog.conf
SMF: online 9:58:24 svc:/system/system-log:default
1、 syslog.conf文件
格式:facility(源). level(程度) 消息接受地
如:
*.err;kern.debug;daemon.notice;mail.crit /var/adm/messages
*.alert;kern.err;daemon.err operator
*.alert root
注:多个消息,用“;”分号间隔,消息接受地类型:文件(接受日志信息的文件)、远程主机(格式为@servername、@IP)、用户(多个用户用“,”逗号隔离)、*(表示发给所有已登录用户)
解析:
facility
kern 内核产生的消息 user 用户进程产生的消息,默认的facility关键字
mail 邮件系统 daemon 守护进程产生的消息
auth 与验证、安全、授权系统有关的系统消息,如login、su、getty等
lpr 打印消息 news 网络新闻消息
cron 自动作业消息 audit 与审计有关的消息
syslog syslogd自身产生的消息 mark 消息的最后保存时间,由syslogd本身产生
* 表示所有的facility,除mark外
level
emerg 紧急情况,通常会广播给所有用户,级别最高
alert 应立即纠正的状态,比如系统数据块受到破坏
crit 紧急情况警告,如硬件设备错误
err 不属于crit的其它错误
warning 告警消息
notice 可能需要处理的消息
info 普通消息通知
debug 调试程序时出现的消息
none facility发出的任何消息不会被发送到目的地
ifdef判断语句
ifdef('LOGHOST',true部分,false部分)
当LOGHOST已定义,执行‘true部分’,LOGHOST未定义,则执行‘false部分’
如:
mail.debug ifdef(`LOGHOST', /var/log/syslog, @loghost)
M4宏处理器
bash-3.2# ls -l /usr/ccs/bin/m4
-r-xr-xr-x 1 root bin 32112 2005 23 /usr/ccs/bin/m4
syslogd不直接读取/etc/syslog.conf文件,而是启动M4,M4再读取/etc/syslog.conf文件,并将读取的结果发给syslogd守护进程。
另外syslogd随系统启动时,会检查/etc/hosts文件,判断是否有loghost关键词。如
IP hostname loghost 与 IP hostname 是两种不同情况,如果syslogd读取/etc/hosts时没有loghost关键词,则启动M4的方式为:/usr/css/bin/m4 不带参数表示没有定义LOGHOST。如果有loghost关键词,则启动M4的方式为:/usr/css/bin/m4 -D LOGHOST ,即定义LOGHOST变量。影响ifdef语句。
2、 重启syslogd命令:
pkill -HUP syslogd
查看日志命令:dmesg
dmesg命令读取/var/adm/messages文件。如:dmesg | less
控制日志命令:logadm 常用参数:-s 文件大小 -p 间隔周期
如:bash-3.2# logadm -s 1k -p 2d /var/adm/messages
本文转自fuhaixiong 51CTO博客,原文链接:http://blog.51cto.com/heliy/789210,如需转载请自行联系原作者