日志将我们系统运行的每一个状况信息都使用文字记录出来,这种信息有助我们观察系统运行过程中正常状态和系统运行错误时快速定位错误位置的途径等;下边学习啦小编主要概述一下Linux操作系统中的日志功能。
Linux操作系统中的日志功能解读
大部份Linux发行版默认的日志守护进程为syslog,坐落/etc/syslog或/etc/syslogd,默认配置文件为/etc/syslog.conf,任何希望生成日志的程序都可以向syslog发送信息。
Linux系统内核和许多程序会形成各类错误信息、警告信息和其他的提示信息,这种信息对管理员了解系统的运行状态是十分有用的linux运维博客,所以应当把它们讲到日志文件中去。完成这个过程的程序就是syslog。syslog可以按照日志的类别和优先级将日志保存到不同的文件中。诸如,为了便捷查阅,可以把内核信息与其他信息分开,单独保存到一个独立的日志文件中。默认配置下,日志文件一般都保存在“/var/log”目录下。
日志类型
下边是常见的日志类型,但并不是所有的Linux发行版都包含那些类型:
日志优先级
常见的日志优先级请见下标:
优先级说明
emerg
紧急情况,系统不可用(比如系统崩溃),通常会通知所有用户。
alert
须要立刻修补,比如系统数据库受损。
crit
危险情况,比如硬碟错误,可能会妨碍程序的部份功能。
err
通常错误消息。
warning
警告。
notice
不是错误,并且可能须要处理。
info
通用性消息,通常拿来提供有用信息。
debug
调试程序形成的信息。
none
没有优先级,不记录任何日志消息。
常见日志文件
所有的系统应用就会在/var/log目录下创建日志文件,或创建子目录再创建日志文件。诸如:
/etc/syslog.conf文件
/etc/syslog.conf是syslog的配置文件,会依照日志类型和优先级来决定将日志保存到何处。典型的syslog.conf文件格式如下所示:
*.err;kern.debug;auth.notice/dev/console
daemon,auth.notice/var/log/messages
/var/log/lpr.log
mail.*/var/log/mail.log
ftp.*/var/log/ftp.log
auth.*@
auth.*root,amrood
netinfo.err/var/log/netinfo.log
install.*/var/log/install.log
*.emerg*
*.alert|program_name
mark.*/dev/console
第一列为日志类型和日志优先级的组合,每位类型和优先级的组称作为一个选择器;前面一列为保存日志的文件、服务器,或输出日志的终端。syslog进程依据选择器决定怎样操作日志。
对配置文件的几点说明:
日志类型和优先级由点号(.)分开,比如kern.debug表示由内核形成的调试信息。
kern.debug的优先级小于debug。
星号(*)表示所有,比如*.debug表示所有类型的调试信息,kern.*表示由内核形成的所有消息。
可以使用冒号(,)分隔多个日志类型,使用分号(;)分隔多个选择器。
对日志的操作包括:
将日志输出到文件,比如/var/log/maillog或/dev/console。
将消息发送给用户,多个用户用冒号(,)分隔linux 日志文件系统,比如root,amrood。
通过管线将消息发送给用户程序,注意程序要置于管线符(|)旁边。
将消息发送给其他主机上的syslog进程,这时/etc/syslog.conf文件前面一列为以@开头的主机名linux 日志文件系统,比如@。
logger
logger是,可以通过该使用syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。
logger命令的句型为:
logger[-i][-ffilename][-ppriority][-ttag][message...]
每位选项的含意如下:
比如,将ping命令的结果写入日志:
$ping192.168.0.1|logger-itlogger_test-plocal3.notice&
$tail-f/var/log/userlog
Oct612:48:43keveinlogger_test[22484]:PING192.168.0.1(192.168.0.1)56(84)bytesofdata.
Oct612:48:43keveinlogger_test[22484]:64bytesfrom192.168.0.1:icmp_seq=1ttl=253time=49.7ms
Oct612:48:44keveinlogger_test[22484]:64bytesfrom192.168.0.1:icmp_seq=2ttl=253time=68.4ms
Oct612:48:45keveinlogger_test[22484]:64bytesfrom192.168.0.1:icmp_seq=3ttl=253time=315ms
Oct612:48:46keveinlogger_test[22484]:64bytesfrom192.168.0.1:icmp_seq=4ttl=253time=279ms
Oct612:48:47keveinlogger_test[22484]:64bytesfrom192.168.0.1:icmp_seq=5ttl=253time=347ms
Oct612:48:49keveinlogger_test[22484]:64bytesfrom192.168.0.1:icmp_seq=6ttl=253time=701ms
Oct612:48:50keveinlogger_test[22484]:64bytesfrom192.168.0.1:icmp_seq=7ttl=253time=591ms
Oct612:48:51keveinlogger_test[22484]:64bytesfrom192.168.0.1:icmp_seq=8ttl=253time=592ms
Oct612:48:52keveinlogger_test[22484]:64bytesfrom192.168.0.1:icmp_seq=9ttl=253time=611ms
Oct612:48:53keveinlogger_test[22484]:64bytesfrom192.168.0.1:icmp_seq=10ttl=253time=931ms
ping命令的结果成功输出到/var/log/userlog文件。
命令logger-itlogger_test-plocal3.notice各选项的含意:
-i:在每行都记录进程ID;
-tlogger_test:每行记录都加上“logger_test”这个标签;
-plocal3.notice:设置日志类型和优先级。
日志轮询
日志轮询也叫日志回卷或日志轮转。Linux中的日志一般下降很快,会占用大量硬碟空间,须要在日志文件达到指定大小时分开储存。
syslog只负责接收日志并保存到相应的文件,但不会对日志文件进行管理,因而常常会导致日志文件过大,尤其是WEB服务器,轻易能够超过1G,给检索带来困难。
大多数Linux发行版使用logrotate或newsyslog对日志进行管理。logrotate程序不但可以压缩日志文件,降低储存空间,还可以将日志发送到指定E-mail,便捷管理员及时查看日志。
比如,规定电邮日志/var/log/maillog超过1G时轮询,每周一次,这么每隔一周logrotate进程都会检测/var/log/maillog文件的大小:
假如没有超过1G,不进行任何操作。
假如在1G~2G之间linux 虚拟主机,都会创建新文件/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"manlogrotate"fordetails//可以查看帮助文档
#rotatelogfilesweekly
weekly//设置每周轮询一次
#keep4weeksworthofbacklogs
rotate4//最多轮询4次
#createnew(empty)logfilesafterrotatingoldones
create//当轮询后文件不储存时创建它
#uncommentthisifyouwantyourlogfilescompressed
#compress//以压缩方法轮询
#RPMpackagesdroplogrotationinformationintothisdirectory
include/etc/logrotate.d//其他日志文件的轮询形式,包含在该目录下
#nopackagesownwtmp--we'llrotatethemhere
/var/log/wtmp{//设置/var/log/wtmp日志文件的轮询参数
monthly//每月轮询
create0664rootutmp//轮询后文件不存在时创建它,文件所有者为root,所属组为utmp,对应的权限为0664
rotate1//最多轮询一次
}
注意:include容许管理员把多个分散的文件集中到一个,类似于C语言的#include,将其他文件的内容包含进当前文件。
include特别有用,一些程序会把轮询日志的配置文件置于/etc/logrotate.d目录,这种配置文件会覆盖或降低/etc/logrotate.conf的配置项,假如没有指定相关配置,这么采用/etc/logrotate.conf的默认配置。
所以,建议将/etc/logrotate.conf作为默认配置文件,第三方程序在/etc/logrotate.d目录下自定义配置文件。
logrotate也可以作为命令直接运行来更改配置文件。
看过“Linux操作系统中的日志功能解读”的人还看了:
1.Linux系统查看当前时间的命令
2.Linux中怎样使用find命令进行日志定期转移
3.linux如何查看显存
4.RedHat怎么安装log4cxx日志库
5.Tomcat如何关掉日志输出
本文原创地址://q13zd.cn/lxtnhhxtyxcw.html编辑:刘遄,审核员:暂无