原文链接:
Linux日志文件与syslog函数介绍
在我们程序运行的过程中,由于需要不间断的运行。当发生错误的时候就得产生错误的信息并且反馈给管理人员知道。特别的对于运行于后台的daemon程序,产生的日志消息更是能够帮助我们更加清楚全面的掌握我们程序的运行状况。
除此之外,Linux系统中各种大大小小的消息和错误都会使用日志,所以通过日志分析也能够让我们知道系统出了什么问题,以及是否有不当的操作等等,这也是众多系统管理员的一大利器!
今天我们就谈谈在Linux平台上如何使用日志。
syslog服务
在具体的使用前我们需要先了解日志服务的一个deamon——rsyslogd。
rsyslogd相比较于syslogd提供了更多的服务,在我使用的Ubuntu15.10下,也是自带了rsyslogd。
rsyslog为我们提供日志的服务。它像众多的deamon程序一样默默的提供着服务。
在Bash下输入
ps aux|grep rsyslogd
得到如下
可以看出rsyslog是一个由父进程为init的进程的守护进程。
它也就是为我们提供日志服务的进程了!
那么,这个进程为我们产生的日志消息又在哪呢?
/var/log/
目录下,有各种各样的消息日志在等着我们查看呢,快去先看一眼吧!
日志文件内容的一般形式
如果我们打开/var/log/
这个目录一看,就会发现有很多的文件,除无后缀的文件外还包括以.log
结尾和以.数字
结尾的文件(这与后面会说到的”日志文件轮替”相关)。
让我们先随便打开一个文件
这是从我系统中/var/log/syslog
文件截取的一段,可以看到其中包含的日志信息格式:
[日期][主机][模块][信息]
所传达的意思就是:
3月22日的18:03:44 由Innocence这台主机的dnsmasq[PID为1441]传来的消息,消息内容为”using nameserver 115.159.55.17#53”
怎么样,这样的消息格式是不是很简单明了?
服务类型
rsyslogd为我们提供了很多种的服务类型,如果你在Bash中man syslog
一下,就可以在facility参数里看到全部的服务啦。
这里列举一部分后面会用到的:
- LOG_AUTH——认证系统:login、su等
- LOG_AUTHPRIV——同上,单值登陆到对应用户的可读文件中
- LOG_MAIL——电子邮件系统
- LOG_DAEMON——其他系统守护进程
- LOG_NEWS——网络新闻系统
- LOG_LOCAL0 through LOG_LOCAL7
这些都是rsyslogd支持的服务名称,那么这些是什么意思呢?
举个例子来说:
在一些与邮件相关的软件中设计日志文件记录时,都会主动调用rsyslogd内的mail服务名称(LOG_MAIL),所以不管多少种不同的软件程序,由它们的日志消息在rsyslogd看来都是mail这一类型的服务了。所以我们只需要在软件中将消息统统抛给rsyslogd,再通过修改配置文件就能够让它帮我们组织管理日志文件了。
——后面会有更详细的解释
信息等级
既然我们已经有了记录消息的地方,那么不同的消息也要分个轻重缓急吧?
如果是严重到会导致系统崩溃的错误消息,那么我们也当