📅  最后修改于: 2020-10-31 15:00:45             🧑  作者: Mango
在本章中,我们将详细讨论Unix中的系统日志记录。
Unix系统具有非常灵活和强大的日志记录系统,使您能够记录几乎所有您能想象的内容,然后操纵日志以检索所需的信息。
Unix的许多版本都提供了称为syslog的通用日志记录工具。需要记录信息的各个程序将信息发送到syslog。
Unix syslog是主机可配置的统一系统日志记录工具。系统使用集中式系统日志记录过程,该过程运行程序/ etc / syslogd或/ etc / syslog 。
系统记录器的操作非常简单。程序将其日志条目发送到syslogd ,后者查询配置文件/etc/syslogd.conf或/ etc / syslog,并在找到匹配项时将日志消息写入所需的日志文件。
您应该了解四个基本的syslog术语-
Sr.No. | Term & Description |
---|---|
1 |
Facility The identifier used to describe the application or process that submitted the log message. For example, mail, kernel, and ftp. |
2 |
Priority An indicator of the importance of the message. Levels are defined within syslog as guidelines, from debugging information to critical events. |
3 |
Selector A combination of one or more facilities and levels. When an incoming event matches a selector, an action is performed. |
4 |
Action What happens to an incoming message that matches a selector — Actions can write the message to a log file, echo the message to a console or other device, write the message to a logged in user, or send the message along to another syslog server. |
现在,我们将了解syslog工具。这是选择器可用的设施。并非所有版本的Unix都具有所有功能。
Facility | Description |
---|---|
1 |
auth Activity related to requesting name and password (getty, su, login) |
2 |
authpriv Same as auth but logged to a file that can only be read by selected users |
3 |
console Used to capture messages that are generally directed to the system console |
4 |
cron Messages from the cron system scheduler |
5 |
daemon System daemon catch-all |
6 |
ftp Messages relating to the ftp daemon |
7 |
kern Kernel messages |
8 |
local0.local7 Local facilities defined per site |
9 |
lpr Messages from the line printing system |
10 |
Messages relating to the mail system |
11 |
mark Pseudo-event used to generate timestamps in log files |
12 |
news Messages relating to network news protocol (nntp) |
13 |
ntp Messages relating to network time protocol |
14 |
user Regular user processes |
15 |
uucp UUCP subsystem |
下表总结了syslog优先级-
Sr.No. | Priority & Description |
---|---|
1 |
emerg Emergency condition, such as an imminent system crash, usually broadcast to all users |
2 |
alert Condition that should be corrected immediately, such as a corrupted system database |
3 |
crit Critical condition, such as a hardware error |
4 |
err Ordinary error |
5 |
Warning Warning |
6 |
notice Condition that is not an error, but possibly should be handled in a special way |
7 |
info Informational message |
8 |
debug Messages that are used when debugging programs |
9 |
none Pseudo level used to specify not to log messages |
设施和级别的组合使您可以区分所记录的内容和该信息的去向。
当每个程序将其消息忠实地发送给系统记录器时,记录器将根据选择器中定义的级别来决定要跟踪什么和丢弃什么。
指定级别后,系统将跟踪该级别及更高级别的所有内容。
/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
文件的每一行包含两部分-
消息选择器,指定要记录的消息类型。例如,来自内核的所有错误消息或所有调试消息。
一个操作字段,说明应如何处理消息。例如,将其放在文件中或将消息发送到用户终端。
以下是上述配置的值得注意的要点-
消息选择器分为两部分:便利和优先级。例如, kern.debug选择内核(工具)生成的所有调试消息(优先级)。
消息选择器kern.debug选择所有大于debug的优先级。
用星号代替设施或优先级表示“全部”。例如, *。 debug表示所有调试消息,而kern。*表示由内核生成的所有消息。
您也可以使用逗号指定多个功能。可以使用分号将两个或多个选择器组合在一起。
操作字段指定五个操作之一-
将消息记录到文件或设备。例如, /var/ log / lpr.log或/ dev / console 。
向用户发送消息。您可以使用逗号分隔多个用户名。例如,root,amrood。
向所有用户发送消息。在这种情况下,操作字段由星号组成;例如, *。
将消息传递到程序。在这种情况下,该程序在Unix管道符号(|)之后指定。
将消息发送到另一台主机上的系统日志。在这种情况下,操作字段由主机名组成,后跟一个at符号;例如,@ tutorialspoint.com。
Unix提供了logger命令,这是处理系统日志记录的非常有用的命令。 logger命令将日志记录消息发送到syslogd守护程序,并因此引发系统日志记录。
这意味着我们可以随时从命令行检查syslogd守护程序及其配置。 logger命令提供了一种用于从命令行将单行条目添加到系统日志文件的方法。
命令的格式为-
logger [-i] [-f file] [-p priority] [-t tag] [message]...
这是参数的详细信息-
Sr.No. | Option & Description |
---|---|
1 |
-f filename Uses the contents of file filename as the message to log. |
2 |
-i Logs the process ID of the logger process with each line. |
3 |
-p priority Enters the message with the specified priority (specified selector entry); the message priority can be specified numerically, or as a facility.priority pair. The default priority is user.notice. |
4 |
-t tag Marks each line added to the log with the specified tag. |
5 |
message The string arguments whose contents are concatenated together in the specified order, separated by the space. |
您可以使用手册页帮助来检查此命令的完整语法。
日志文件倾向于快速增长并消耗大量磁盘空间。为了启用日志轮转,大多数发行版都使用诸如newsyslog或logrotate之类的工具。
应该使用cron守护程序按固定的时间间隔调用这些工具。检查手册页中的newsyslog或logrotate以获取更多详细信息。
所有系统应用程序都在/ var / log及其子目录中创建其日志文件。以下是一些重要的应用程序及其对应的日志目录-
Application | Directory |
---|---|
httpd | /var/log/httpd |
samba | /var/log/samba |
cron | /var/log/ |
/var/log/ | |
mysql | /var/log/ |