Unix 简明教程

Unix / Linux - System Logging

在本章中,我们将详细讨论 Unix 中的系统日志记录。

Unix 系统拥有非常灵活而强大的日志记录系统,它让你能够记录你所能想象的几乎所有内容,然后操作日志来检索所需的信息。

许多版本的 Unix 提供了一个称为 syslog 的通用日志记录工具。需要记录信息的各个程序会将信息发送到 syslog。

Unix syslog 是一种可由主机配置的统一系统日志记录工具。该系统使用一个集中式系统日志记录进程,它运行程序 /etc/syslogd/etc/syslog

系统记录器的运行非常直接。程序会将日志条目发送至 syslogd,syslogd 会查阅配置文件 /etc/syslogd.conf/etc/syslog ,并在找到匹配时将日志消息写入所需的日志文件。

有四个基本的 syslog 术语你需要掌握 -

Sr.No.

Term & Description

1

Facility 用于描述提交日志消息的应用程序或进程的标识符。例如,mail、kernel 和 ftp。

2

Priority 消息重要性的指标。syslog 中将级别定义为指南,从调试信息到严重事件。

3

Selector 一种或多种工具和级别的组合。当传入事件匹配一个选择器时,会执行一个操作。

4

Action 匹配选择器的传入消息会怎么样 - 操作可以将消息写入日志文件、将消息回显至控制台或其他设备、向已登录的用户写入消息或将消息发送至另一个 syslog 服务器。

Syslog Facilities

我们现在将了解 syslog 工具。以下是选择器的可用工具。并非所有工具都在 Unix 的所有版本中都存在。

Facility

Description

1

auth 与请求名称和密码相关的活动(getty、su、login)

2

authpriv 与 auth 相同,但记录到仅由选定用户可以读取的文件中

3

console 用于捕获通常直接发送到系统控制台的消息

4

cron 来自 cron 系统计划程序的消息

5

daemon System daemon catch-all

6

ftp 与 ftp 守护进程相关消息

7

kern Kernel messages

8

local0.local7 每个站点定义的本地功能

9

lpr 来自行式打印系统的消息

10

mail 与邮件系统关联的消息

11

mark 用于在日志文件中生成时间戳的伪事件

12

news 与网络新闻协议 (nntp) 相关消息

13

ntp 与网络时间协议相关消息

14

user Regular user processes

15

uucp UUCP subsystem

Syslog Priorities

syslog 优先级汇总在以下表格中

Sr.No.

Priority & Description

1

emerg 紧急情况,例如迫在眉睫的系统崩溃,通常会广播给所有用户

2

alert 应立即更正的情况,例如损坏的系统数据库

3

crit 严重情况,例如硬件错误

4

err Ordinary error

5

Warning Warning

6

notice 并非错误的情况,但可能需要以特殊方式处理

7

info Informational message

8

debug 调试程序时使用消息

9

none 用于指定不记录消息的伪级别

设施和级别的组合使您能够明辨要记录的内容以及这些信息存放的位置。

随着每个程序尽职尽责地将自己的消息发送到系统日志,日志记录器将根据选择器中定义的级别,决定跟踪哪些内容,以及丢弃哪些内容。

当你指定一个级别,系统将跟踪该级别及更高级别下的所有信息。

The /etc/syslog.conf file

/etc/syslog.conf 文件控制日志消息记录的位置。一个典型的 syslog.conf 文件可能如下所示 −

*.err;kern.debug;auth.notice /dev/console
daemon,auth.notice           /var/log/messages
lpr.info                     /var/log/lpr.log
mail.*                       /var/log/mail.log
ftp.*                        /var/log/ftp.log
auth.*                       @prep.ai.mit.edu
auth.*                       root,amrood
netinfo.err                  /var/log/netinfo.log
install.*                    /var/log/install.log
*.emerg                      *
*.alert                      |program_name
mark.*                       /dev/console

该文件的每一个行包含两个部分 −

  1. 一个 message selector ,用来指定应该记录哪类消息。例如,从内核生成的所有错误消息或所有调试消息。

  2. 一个 action field ,用来表明应该如何处理该消息。例如,将其放入一个文件或将其发送到用户的终端。

以下是上述配置的值得关注的要点 −

  1. 日志选择器有两个部分: a facilitya priority 。例如,kern.debug 选择由内核(设备)生成的所有调试消息(优先级)。

  2. 日志选择器 kern.debug 选择所有优先级高于调试的优先级。

  3. 在设备或优先级的位置使用星号表示“全部”。例如, .debug 表示所有调试消息,而 kern. 表示由内核生成的所有消息。

  4. 你还可以使用逗号来指定多个设备。使用分号可以将两个或更多选择器组合在一起。

Logging Actions

操作字段指定五个操作中的一个 −

  1. 将日志消息记录到文件或设备。例如, /var/log/lpr.log/dev/console

  2. 向用户发送消息。你可以通过用逗号分隔多个用户名来指定多个用户名;例如,root、amrood。

  3. 向所有用户发送消息。在这种情况下,操作字段包含一个星号;例如,*。

  4. 使用 Unix 管道符号(|)将消息管道到程序。在这种情况下,Unix 管道符号后会指定程序。

  5. 将消息发送到其他主机上的 syslog。在这种情况下,操作字段包括一个主机名,前面加上一个 at 符号;例如,@tutorialspoint.com。

The logger Command

Unix 提供了 logger 命令,这是一个非常有用的命令,用于处理系统日志记录。 logger 命令将日志记录消息发送到 syslogd 守护程序,并因此触发系统日志记录。

这意味着我们可以随时从命令行中查看 syslogd 守护程序及其配置。logger 命令提供了一种从命令行向系统日志文件添加单行条目的方法。

命令的格式为 −

logger [-i] [-f file] [-p priority] [-t tag] [message]...

以下是参数的说明:

Sr.No.

Option & Description

1

-f filename 使用文件 filename 的内容作为要记录的消息。

2

-i 使用每一行的记录器进程记录进程 ID。

3

-p priority 使用指定优先级(指定的选定器条目)输入消息;消息优先级可以用数字指定,或者作为设施.priority 对指定。默认优先级为 user.notice。

4

-t tag 使用指定标签标记添加到日志的每一行。

5

message 字符串参数,它们的文本内容以指定顺序连接在一起,并用空格分隔。

你可以使用 Manpage Help 检查此命令的完整语法。

Log Rotation

日志文件有很快速增长和占用大量磁盘空间的趋势。为了启用日志轮换,大多数发行版会使用诸如 newsysloglogrotate 的工具。

这些工具应该使用 cron daemon 在频繁的时间间隔内被调用。查看 newsyslog 或 logrotate 的手册页以获得更多详细信息。

Important Log Locations

所有系统应用程序都在 /var/log 及其子目录中创建它们的日志文件。以下是一些重要的应用程序及其对应的日志目录 −

Application

Directory

httpd

/var/log/httpd

samba

/var/log/samba

cron

/var/log/

mail

/var/log/

mysql

/var/log/