日志系统说白了就是消息记录系统。Linux的日志系统遵循 Syslog 标准。

Syslog 是一种用来在互联网协议(TCP/IP)的网络中传递记录档消息的标准。一般被称为系统日志或系统记录,这个词汇常用来指涉实际的 syslog 协议,或者那些提交syslog消息的应用程序或数据库。
– 来自维基百科

日志系统记录Linux在运行过程中出现的各种事件消息,对追溯并解决使用中出现的问题、查看系统的运行状态、追踪网络攻击的非法入侵都非常有用,做为使用Linux系统的用户,知道Linux日志文件的存放位置,怎样查看和管理日志文件是必须要了解和掌握的。

很多应用程序使用Syslog标准将消息写入日志系统,Linux的日志系统由一组遵循 Syslog 标准的服务程序(比如syslog, rsyslog, 和 syslog-ng)所组成,它们接收并存储应用程序发出的消息并保存到日志文件中,这些消息都带有设备标识(Facility)和级别(priority),日志服务则根据设备标识和优先级将消息分门别类进行存放。

配置文件位置

Linux中常用的日志服务程序的配置文件的位置如下:

日志服务 主配置文件
syslog /etc/syslog.conf
rsyslog /etc/rsyslog.conf
syslog-ng /etc/syslog-ng/syslog-ng.conf

日志文件位置

Linux系统的日志文件的保存位置一般在 /var/log目录下,一些常见的日志文件如下:

文件名 内容
messages or syslog 系统消息
dmesg or kern.log 内核与驱动程序
cron Cron 调度程序
httpd or apache2 Web 服务
maillog 邮件系统
secure or auth.log 安全审计日志

优先级

优先级表示消息的紧急程度,最低为debug,顾名思义,用来记录程序的调试信息,一般用来排错。最高级别为 emerg,表示系统无法继续运行而关机,由低到高为:

优先级 描述
debug 调试信息
info 消息
notice 一般应关注
warning 警示
err 错误
crit 严重 Critical
alert 告警,需要立即处理
emerg 紧急 emergency,系统将不可用

在一些旧系统中,可能会出现一些已经废弃的级别标识,如warn(同warning),panic(同emerg) ,error(同err)。

设备标识

设备标识用于对消息进行归类,设备标识为mail的消息会被放入电子邮件日志文件中,而标识 为authpriv的消息通常只有系统管理员可以访问。

Facility Associated system
auth 安全日志
authpriv root专属的安全日志 (如用户登录信息)
cron Cron 调度程序
daemon 系统消息
ftp FTP 服务器
kern 内核
lpr 打印服务
mail 邮件系统
news NNTP 系统 (Usenet)
syslog Syslog 消息
user User-level 用户消息
uucp UUCP (old file copy protocol)
local0 to local7 用户自定义

工具

Logger

Logger程序提供向Syslog发送消息日志的功能。
使用方法

1
$ logger <OPTIONS> [MESSAGE]

Logger的常用参数列表

选项 描述
-p 指定设备标识和优先级,格式为 priority 或 facility.priority. 默认值是“user.notice”
-n 将消息记录到远程服务器上而不是本地
-t 为消息添加一个标签((默认值为当前运行Logger的用户名)
-f 从指定文件读取消息

例如:

1
$ logger -t SYSLOAD -p user.info -n logs.example.com System load is low

Logrotate

logrotate 用于控制应用程序的日志文件大小,通过对文件定期清理,防止日志文件过大而占满磁盘,如果程序自带日志文件而不是使用syslog记录,那么将如何定期清理日志文件的相关配置放入Logrotate的配置目录中:

1
/etc/logrotate.d

配置文件的格式和使用方法可以参考文件 /etc/logrotate.conf中的说明。