三类日志子系统:

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