Linux系统日志
来源:互联网 发布:选择财物软件方案 编辑:程序博客网 时间:2024/06/06 03:29
大多数程序将它们的日志信息输出到syslog服务。传统的syslogd守护进程等待消息的到来,并根据它们的类型将她们输出到文件、屏幕、用户或者其它地方,有的干脆忽略。
一 系统日志
系统日志是系统中最重要的部分之一。如果系统出现用户不清楚的错误,查看系统日志文件是一个好选择。大多数Linux系统使用的是syslogd的一个新版本,名字叫rsyslogd。它的功能不仅仅局限于记录日志信息。比如用户可以让它加载一个将日志信息写到数据库的模块。
日志一般被记录在/var/log目录当中,一般日志文件的内容就显示了它们来自哪里。/var/log目录中的很多文件都不是系统日志来维护的。要知道哪些日志属于rsyslogd,需要查看它们的配置文件。
二 配置文件
rsyslog的基础配置文件是/etc/rsyslog.conf,但是在其他地方(比如/etc/rsyslogd.d)也可能会发现另外的配置文件。其内容包括传统的规则和rsyslogd扩展。任何以$开头的都是扩展。
传统的规则包括一个选择符(selector)和一个操作(action),分别代表从哪里获得日志和将其写到哪里,如下:
*.err;kern.debug;auth.notice /dev/consoledaemon,auth.notice /var/log/messageslpr.info /var/log/lpr.logmail.* /var/log/mail.logftp.* /var/log/ftp.logauth.* @see.xidian.edu.cnauth.* root,amroodnetinfo.err /var/log/netinfo.loginstall.* /var/log/install.log*.emerg **.alert |program_namemark.* /dev/console
左边是选择符,右边是操作。上例大部分操作都是将日志写入文件,也有一些例外(/dev/console)。还有root表示如果root登录的话,将消息发送给他,*代表发送消息给系统中的所有用户。@see.xidian.edu.cn表示将消息发送给网络上名为see.xidian.edu.cn的主机。
设施和优先级
选择符用来匹配日志信息的设施和优先级。设施是指消息的大致分类(在rsyslog.conf(5)帮助手册中查看完整的设施列表)。设施的功能很容易通过它们的名称得知。*是一个通配符,表示在所有设施中获得输出。设施后面的点号(.)表示优先级,由高到低分别是:
为选择符设置了优先级之后,rsyslogd将该优先级及其以上优先级的消息发送到指定目的地。
常见的的日志文件:
三 logger
以下来自:http://c.biancheng.net/cpp/html/2783.html
logger 是Shell命令,可以通过该命令使用 syslog 的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。
logger命令的语法为:
logger [-i] [-f filename] [-p priority] [-t tag] [message...]每个选项的含义如下:
例如,将ping命令的结果写入日志:
$ ping 192.168.0.1 | logger -it logger_test -p local3.notice&$ tail -f /var/log/userlogOct 6 12:48:43 kevein logger_test[22484]: PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.Oct 6 12:48:43 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=1 ttl=253 time=49.7 msOct 6 12:48:44 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=2 ttl=253 time=68.4 msOct 6 12:48:45 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=3 ttl=253 time=315 msOct 6 12:48:46 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=4 ttl=253 time=279 msOct 6 12:48:47 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=5 ttl=253 time=347 msOct 6 12:48:49 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=6 ttl=253 time=701 msOct 6 12:48:50 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=7 ttl=253 time=591 msOct 6 12:48:51 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=8 ttl=253 time=592 msOct 6 12:48:52 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=9 ttl=253 time=611 msOct 6 12:48:53 kevein logger_test[22484]: 64 bytes from 192.168.0.1: icmp_seq=10 ttl=253 time=931 msping命令的结果成功输出到 /var/log/userlog 文件。
命令 logger -it logger_test -p local3.notice 各选项的含义:
- -i:在每行都记录进程ID;
- -t logger_test:每行记录都加上“logger_test”这个标签;
- -p local3.notice:设置日志类型和优先级。
日志转储
日志转储也叫日志回卷或日志轮转。Linux中的日志通常增长很快,会占用大量硬盘空间,需要在日志文件达到指定大小时分开存储。syslog 只负责接收日志并保存到相应的文件,但不会对日志文件进行管理,因此经常会造成日志文件过大,尤其是WEB服务器,轻易就能超过1G,给检索带来困难。
大多数Linux发行版使用 logrotate 或 newsyslog 对日志进行管理。logrotate 程序不但可以压缩日志文件,减少存储空间,还可以将日志发送到指定 E-mail,方便管理员及时查看日志。
例如,规定邮件日志 /var/log/maillog 超过1G时转储,每周一次,那么每隔一周 logrotate 进程就会检查 /var/log/maillog 文件的大小:
- 如果没有超过1G,不进行任何操作。
- 如果在1G~2G之间,就会创建新文件 /var/log/maillog.1,并将多出的1G日志转移到该文件,以给 /var/log/maillog 文件瘦身。
- 如果在2G~3G之间,会继续创建新文件 /var/log/maillog.2,并将 /var/log/maillog.1 的内容转移到该文件,将 /var/log/maillog 的内容转移到 /var/log/maillog.1,以保持 /var/log/maillog 文件不超过1G。
可以看到,每次转存都会创建一个新文件(如果不存在),命名格式为日志文件名加一个数字(从1开始自动增长),以保持当前日志文件和转存后的日志文件不超过指定大小。
logrotate 的主要配置文件是 /etc/logrotate.conf,/etc/logrotate.d 目录是对 /etc/logrotate.conf 的补充,或者说为了不使 /etc/logrotate.conf 过大而设置。
可以通过 cat 命令查看它的内容:
$cat /etc/logrotate.conf# see "man logrotate" for details //可以查看帮助文档# rotate log files weeklyweekly //设置每周转储一次# keep 4 weeks worth of backlogsrotate 4 //最多转储4次# create new (empty) log files after rotating old onescreate //当转储后文件不存储时创建它# uncomment this if you want your log files compressed#compress //以压缩方式转储# RPM packages drop log rotation information into this directoryinclude /etc/logrotate.d //其他日志文件的转储方式,包含在该目录下# no packages own wtmp -- we'll rotate them here/var/log/wtmp { //设置/var/log/wtmp日志文件的转储参数 monthly //每月转储 create 0664 root utmp //转储后文件不存在时创建它,文件所有者为root,所属组为utmp,对应的权限为0664 rotate 1 //最多转储一次}
注意:include 允许管理员把多个分散的文件集中到一个,类似于C语言的 #include,将其他文件的内容包含进当前文件。
include 非常有用,一些程序会把转储日志的配置文件放在 /etc/logrotate.d 目录,这些配置文件会覆盖或增加 /etc/logrotate.conf 的配置项,如果没有指定相关配置,那么采用 /etc/logrotate.conf 的默认配置。
所以,建议将 /etc/logrotate.conf 作为默认配置文件,第三方程序在 /etc/logrotate.d 目录下自定义配置文件。
logrotate 也可以作为命令直接运行来修改配置文件。
- 【日志】linux 日志系统
- Linux系统日志及日志
- Linux系统日志
- Linux日志系统
- Linux系统日志管理
- linux的日志系统
- Linux 系统日志
- Linux系统日志管理
- Linux系统日志管理
- Linux系统日志管理
- Linux系统日志管理
- Linux系统日志管理
- Linux系统日志管理
- Linux配置系统日志
- Linux系统日志管理
- Linux系统日志管理
- linux系统日志
- centos linux系统日志
- android Java 提交数据到服务器的两种方式中四种方法
- 【bzoj3209】【花神的数论题】【数位dp+快速幂】
- 【追求进步】腾讯实习生面试题
- HihoCoder Trie树 java实现
- Swift变量名的一种玩法
- Linux系统日志
- springMVC4(8)模型数据绑定全面分析
- 海康威视Android SDK,并非萤石Android SDK
- 命令学习 of Ubuntu
- nginx access_log 完全关闭
- Auto MDI/MDI-X 简要说明及网线头线序
- 【bzoj1103】【POI2007】【大都市】
- 每周一算法(之数据查找之一)
- iOS绘图教程