Linux日志系统的基本概要
上一篇 / 下一篇 2008-08-19 14:06:34 / 个人分类:Linux
e7~n*['?Dkohp0如:DOIT博客cPkFL
who
^+uT2f!q1k T"@0fingerDOIT博客6~C8VAF$`J
users
.J8x-oT(VIO)?@0~~~~~~~~~~~utmp记录
r T6a\2a$S0dmesg
,{#d9hLT,x;dI0lastlogDOIT博客9TVc9M7{0Zj
last/ac
P/X+B-Z R \8sV0Oe-k0~~~~~ wtmp~DOIT博客z-E z&FX r.Y
E+i+HQEe0e.Y0SYSLOG日志级别:DOIT博客"T8cg(q:?9Uf RQ
[emerg]DOIT博客$\?1x4i5kR-S
非常状态
ibsDQ#uJ,~"e0[alert]DOIT博客6rq-r^4hm+G
警报
T$Ri#g"tO0[crit]DOIT博客1B~oM!zb"J3e)F"Ut
临界DOIT博客uod#h e(C'U3[
[err]DOIT博客fwW(xD Q m#D
错误
S_!EJ1n0[warn]DOIT博客:X`yj:z
警告
:yi6p-zD0[notice]
S7rs)g-[`g0注意DOIT博客G.B*_5J!@Y2X0tG
[info]DOIT博客!q4m9@ lk3D$v'P
信息
6x fN+U1a0[debug]DOIT博客*U;FfAU'm?E
debug
*CA%Kty/@6Y0[none]DOIT博客dTc"cG I*@
/etc/syslog.conf用于定义一般的日志文件
R| F)oz"`2g9@0DOIT博客^ ZH H `E
如:注:“*”代表“every”,“!”代表“非”,“;”是分隔符,“,”是多个服务间的分隔符。
`;_pn1])c_1D0*.*;news,cron,mail.none /var/log/messageDOIT博客X,D6RI#rw
左半部分:(按语法顺序)当任意服务(第一个*)产生了任意消息(第二个*)并且news,cron,mail服务不记录(最后的none);DOIT博客Z)A0bDiY
(按汉语语法解释)除了news,cron,mail外的任何服务产生的任何级别的消息;右半部分:这些消息会被写入/var/log/message文件。DOIT博客n-a#HtJ
DOIT博客$nv3g6Jd"v3uh
DOIT博客`(F\!hI
/etc/logrotate.conf用于定义循环日志
语法:
3Yy(P!B"L0/路径/日志文件{
-B:ST w3W4k&d-LQ0
{ n H_U,h nl&j0#下面一行是声明,声明该段脚本包含了prerotate和postrotate。DOIT博客M-{;^3s%[ \Ld
sharedscriptsDOIT博客f4|~~ @I }y(w"v
F.iI2{"|Z{0#执行前行为DOIT博客 u"ig5rFT
prerotateDOIT博客h'PHhc
命令DOIT博客+C6Prh(@ j;g
endscript
Tr3?3ca0
#例:每月执行一次
LzUZ,hr z0 monthlyDOIT博客y-dQ/p EL
.rE3[{*O,?}w'g0#例:保留5份历史DOIT博客7g/B&A c1}D5A"H's
rotate 5DOIT博客*@;b sRjG+}+o8Q
DOIT博客*M"N;v+niP
#执行后行为DOIT博客7\'Q,ZdHnH a0?-Y
postrotate
$IPiP5P"g0 命令DOIT博客Z?e.b@l G%~3Zav
endscript
$?/gIO:Ckk0DOIT博客xSE u6q"s h!qG| \
}DOIT博客.?S5D:NP6y4q
syslog设备#yvCHHY0
syslog已被许多日志函数采纳,它用在许多保护措施中。任何程序都可以通过syslog 记录事件。syslog可以记录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能记录本地事件或通过网络记录另一个主机上的事件。
#p?2K_$T,ZGkO0DOIT博客.OTlK \0C7?!^
syslog设备依据两个重要的文件:/etc/syslogd(守护进程)和 /etc/syslog.conf配置文件。习惯上,多数syslog 信息被写到/var/adm或/var/log目录下的信息文件中(messages.*)。一个典型的syslog记录包括生成程序的名字和一个文本信 息。它还包括一个设备和一个优先级范围(但不在日志中出现)。
I9\(z#@4iV w9h0q5ngGiw,Qc i0每个syslog消息被赋予下面的主要设备之一:DOIT博客Z l.Y8q7P \!]6MJ
DOIT博客bprQ"u6Ut
QUOTE:
l(uHX"?;EW)?!~q8z0DOIT博客3x(c?+?+t+K"{.F5BnU
LOG_AUTH:认证系统login、su、getty等。
1`U+F!K @af0LOG_AUTHPRIV:同LOG_AUTH,但只登录到所选择的单个用户可读的文件中。DOIT博客/xJ4P2LEPY7X a
LOG_CRON:cron守护进程。
/@D5T;bNo/F\0LOG_DAEMON:其他系统守护进程,如routed。
S$u||G;e2V,}k:R0LOG_FTP:文件传输协议ftpd、tftpd。
'E*Y5i8BI0LOG_KERN:内核产生的消息。
"z$x&A(?N6||0LOG_LPR:系统打印机缓冲池lpr、lpd。
3N@+Rjd5`~0LOG_MAIL:电子邮件系统。DOIT博客 bg|)Km&E/|
LOG_NEWS:网络新闻系统。
vm:BIX'I:a0LOG_SYSLOG:由syslogd(8)产生的内部消息。
-r:PZ_/bg0LOG_USER:随机用户进程产生的消息。DOIT博客1B&m9r:e4M2`)w.M s
LOG_UUCP:UUCP子系统。DOIT博客!S8Uqap7SylL
LOG_LOCAL0~LOG_LOCAL7:为本地使用保留。DOIT博客[ }2\;V5U1t"jR^'Z
syslog为每个事件赋予几个不同的优先级:DOIT博客 x9TSf]8@+j]J
LOG_EMERG:紧急情况。
qy,fBv3f,Ew9w0LOG_ALERT:应该被立即改正的问题,如系统数据库被破坏。
egR+ez0LOG_CRIT:重要情况,如硬盘错误。DOIT博客4D-Gb7\l,trC
LOG_ERR:错误。
6\*Ke!r|*Q0LOG_WARNING:警告信息。
.x wb*@$U0LOG_NOTICE:不是错误情况,但是可能需要处理。
Sj;{5K9VE)A@ o0LOG_INFO:情报信息。DOIT博客7e u@`p}1S
LOG_DEBUG:包含情报的信息,通常只在调试一个程序时使用。
5a)w5`/E'z.s'@ n{+?H06L!B,{]2[`0syslog.conf文件指明syslogd程序记录日志的行为,该程序在启 动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。这些域由tab符隔开:选择域指明消 息的类型和优先级;动作域指明syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成的。当指明一个优先级时, syslogd将记录一个拥有相同或更高优先级的消息。所以如果指明 "crit",那所有标为crit、alert和emerg的消息将被记录。每行的行动域指明当选择域选择了一个给定消息后应该把它发送到哪儿。例如,如 果想把所有邮件消息记录到一个文件中,如下所示:
3?SB IInQ o1{$[*]0DOIT博客YD8Z(?7sQ(G/r
QUOTE:DOIT博客oSa-a'`~:kXO
DOIT博客7l tJ5A?8S~Y
#Log all the mail messages in one placeDOIT博客/``ZH!g"gn V
3kU%[ u4eh`Gj0?*G0r G,B+h(yJ4nP0mail.* /var/log/maillog
,?G]S*P-J6cJ0[u.CqO@0;Q P QpaZ k?\8B0}}'sN's6gF.E*`0其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为"err"或更高。例如:DOIT博客8B Di"N6J9v5E
8?M7Wx$[ F:^0QUOTE:DOIT博客3XrL]/|a$GI4LE
cr O?1CU6V0SPQ,Q0# Save mail and news errors of level err and higher in aspecial file.DOIT博客{k}D4M
uucp,news.crit /var/log/spoolerDOIT博客+^tE$ip~6k
4qvJ4G#_puE[ m0当一个紧急消息到来时,可能想让所有的用户都得到,也可能想让自己的日志接收并保存:DOIT博客"HI&{ rjw3M4^4C
DOIT博客y? ^q rA
QUOTE:
cH`uUZ-r1]9@:l0DOIT博客+y~t2i YQ1[ s
#Everybody gets emergency messages, plus log them on anther machineDOIT博客@S |MD;^S| w
*.emerg *
%Q/P,UnE!y(p0HIbup0*.emerg @linuxaid.com.cnDOIT博客t&BJ/{ }'^ n X
alert消息应该写到root和tiger的个人账号中:
%qn0_%pDo(iX0Z%CT fT ~f0QUOTE:
p.p%c/Hw0\&c0OijHV4J0#Root and Tiger get alert and higher messages
0x6[esMh0*.alert root,tigerDOIT博客I*y{O _)Wf(_uQ1l
有时syslogd将产生大量的消息。例如,内核("kernel"设备)可能很冗长。用户可能想把内核消息记录到/dev/console中。下面的例子表明内核日志记录被注释掉了:
D1F Kn.]"F|{[0DOIT博客3z},j#KM:G1YJ
QUOTE:
bJ)A [8r8^%I&}$^R}0