例子
将 Linux 机器上的所有关键事件记录在 /var/log 内的单独日志文件中,名称为critical.log
在 /etc/syslog.conf 中添加这一行
*.=crit /var/log/critical.log
在 /var/log/firewall.log 内的单独日志文件中记录所有与内核相关的消息
# Add a new line Kern.* /var/log/firewall.log # Add a new entry at the end of the below line # Log anything (except mail) of level info or higher. # don’t log private authentication messages! # don’t log kernel related events and messages *.info;mail.none;authpriv.none;cron.none;kern.none /var/log/messages
将所有错误日志重定向到远程用户 root 和其终端上的 jack
# Messages of the priority alert will be directed # to the operator #*.err root,jack
在 /var/log/firewall-warning.log 中记录所有防火墙警告级别消息
Kern.warn /var/log/firewall-warning.log
支持远程日志记录
这些修改为 syslogd 工具提供了网络支持。
网络支持意味着消息可以从一个运行 syslogd 的节点转发到另一个运行 syslogd 的节点,在那里它们将被实际记录到磁盘文件中。
策略是让 syslogd 在 unix 域套接字上侦听本地生成的日志消息。
此行为将允许 syslogd 与标准 C 库中的 syslog 进行互操作。
同时 syslogd 在标准 syslog 端口上侦听从其他主机转发的消息。
要使这项工作正常进行,/etc/services 文件必须具有以下条目:
Syslog 514/udp
如果缺少此项,syslogd 既不能接收远程消息,也不能发送它们,因为无法打开 UDP 端口。
相反 syslogd 会立即死亡,并发出错误消息。
例如 ,
将所有消息转发到远程主机使用以下 syslog.conf 条目:
# Sample syslogd configuration files to # Messages to a remote host forward all. *.* @hostname
要将所有内核消息转发到远程主机,配置文件如下:
# Sample configuration files to forward all kernels # messages to a remote host. kern.* @hostname
日志是 Linux 中使用的最重要的标准之一,因为它是关键文件,可确定在 Linux 机器上工作时每秒生成和存储的不同级别的日志。
Syslog 可以作为“系统日志”。
syslog 的主要配置文件是:
对于 RHEL 5 及更早版本
/etc/syslog.conf
对于 RHEL 6 和 7
/etc/rsyslog.conf
系统日志的好处
- 帮助分析造成任何麻烦或者问题的根本原因
- 减少整体停机时间,帮助更快地解决所有日志的问题
- 通过主动检测问题改进事件管理
- 事件的自决以及自动解决
- 具有不同严重程度的简化架构,如错误、信息、警告等
syslog.conf 文件是 syslogd 的主要配置文件,它在 *nix 系统上记录系统消息。
此文件指定日志记录规则。
每个规则由两个字段组成,一个选择器字段和一个操作字段。
这两个字段由一个或者多个空格或者制表符分隔。
选择器字段指定属于指定操作的设施和优先级的模式。
selector(选择器)
选择器字段本身又由两部分组成,设施和优先级,用句号(.
)分隔。
两个部分都不区分大小写。
例如
Kern.none, mail.info etc Here Kern = Facility None = severity or priority
Facility
Facility是以下关键字之一:auth、authpriv、cron、daemon、kern、lpr、mail、mark、news、security(与 auth 相同)、syslog、user、uucp 和 local0 到 local7.
关键字 security 不应再使用,mark 仅供内部使用,因此不应在应用程序中使用。
无论如何,我们可能希望在此处指定和重定向这些消息。
该工具指定产生消息的子系统,例如:如果所有邮件程序使用 syslog 进行日志记录,则它们会使用邮件工具 (LOG_MAIL) 进行日志记录。
Facility编号
编号 | Facility | 描述 |
---|---|---|
0 | kern | 内核消息 |
1 | user | 用户级消息 |
2 | 邮件系统 | |
3 | daemon | 系统守护进程 |
4 | auth | 安全/授权消息 |
5 | syslog | Syslogd内部生成的消息 |
6 | lpr | 线打印机子系统 |
7 | news | 网络新闻子系统 |
8 | uucp | UUCP子系统 |
9 | clock daemon | |
10 | authpriv | 安全/授权消息 |
11 | ftp | FTP守护程序 |
12 | - | NTP Susbsystem. |
13 | - | 记录审核 |
14 | - | 日志警报 |
15 | cron | 时钟守护进程 |
16 | local0 | 本地使用0(local0) |
17 | local1 | 本地使用1(Local1) |
18 | local2 | 本地使用2(Local2) |
19 | local3 | 本地使用3(Local3) |
20 | local4 | 本地使用4(Local4) |
21 | local5 | 本地使用5(Local5) |
22 | local6 | 本地使用6(Local6) |
23 | local7 | 本地使用7(Local7) |
严重程度
优先级是以下关键字之一,按升序排列:debug、info、notice、warning、warn(同warning)、err、error(同err)、crit、alert、emerg、panic(同emerg)。
关键字 error、warn 和 panic 已被弃用,不应再使用。
优先级定义了消息的严重性
Integer | 严重性 |
---|---|
0 | 紧急情况:系统无法使用 |
1 | 警报:必须立即采取操作 |
2 | 关键:批判条件 |
3 | 错误:错误条件 |
4 | 警告:警告条件 |
5 | 注意:正常但重要的条件 |
6 | 信息:信息留言 |
7 | 调试:调试级别消息 |
我们可以使用逗号 (,
) 运算符在一个语句中指定多个具有相同优先级模式的设施。
我们可以指定任意数量的设施(Facility)。
可以使用分号 ('';'') 分隔符为单个操作指定多个选择器。
请记住,选择器字段中的每个选择器都能够覆盖前面的选择器。
使用此行为,我们可以从模式中排除某些优先级。