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
该文件的每一个行包含两个部分 −
-
一个 message selector ,用来指定应该记录哪类消息。例如,从内核生成的所有错误消息或所有调试消息。
-
一个 action field ,用来表明应该如何处理该消息。例如,将其放入一个文件或将其发送到用户的终端。
以下是上述配置的值得关注的要点 −
-
日志选择器有两个部分: a facility 和 a priority 。例如,kern.debug 选择由内核(设备)生成的所有调试消息(优先级)。
-
日志选择器 kern.debug 选择所有优先级高于调试的优先级。
-
在设备或优先级的位置使用星号表示“全部”。例如, .debug 表示所有调试消息,而 kern. 表示由内核生成的所有消息。
-
你还可以使用逗号来指定多个设备。使用分号可以将两个或更多选择器组合在一起。
Logging Actions
操作字段指定五个操作中的一个 −
-
将日志消息记录到文件或设备。例如, /var/log/lpr.log 或 /dev/console 。
-
向用户发送消息。你可以通过用逗号分隔多个用户名来指定多个用户名;例如,root、amrood。
-
向所有用户发送消息。在这种情况下,操作字段包含一个星号;例如,*。
-
使用 Unix 管道符号(|)将消息管道到程序。在这种情况下,Unix 管道符号后会指定程序。
-
将消息发送到其他主机上的 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 检查此命令的完整语法。