日志系统说白了就是消息记录系统。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 | 打印服务 |
邮件系统 | |
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
中的说明。