8.10 用syslog记录日志

日志文件是那些为用户提供服务的应用程序的重要组成部分。应用程序在运行时将状态信息写入日志文件。如果程序崩溃或者当我们需要查询服务的相关信息时,就可以借助日志文件。在/var/log目录中,你可以找到与各种守护进程和应用程序相关的日志文件。/var/log是存储日志文件的公共目录。如果你读过日志文件,你就会看出它们都采用了一种通用的格式。在Linux系统中,在 /var/log中创建并写入日志信息是由被称为syslog的协议处理的。它由守护进程sylogd负责执行。每一个标准应用进程都可以用syslog记录日志信息。在这则攻略中,我们将讨论如何在脚本中用syslogd记录日志信息。

8.10.1 新手上路

日志文件有助于我们推断系统出现了什么故障。因此在编写重要的应用程序时,应当将应用进程的执行过程记录在日志文件中,要养成这个良好的实践习惯。我们接下来将要学习用命令logger通过syslogd记录日志。在学习如何往日志文件中写入信息之前,让我们先看看Linux中一些重要的日志文件,如表8-4所示。

表 8-4

日志文件 描  述
/var/log/boot.log 系统启动信息
/var/log/httpd Apache Web服务器日志
/var/log/messages 发布内核启动信息
/var/log/auth.log 用户认证日志
/var/log/dmesg 系统启动信息
/var/log/mail.log 邮件服务器日志
/var/log/Xorg.0.log X服务器日志

8.10.2 实战演练

要向syslog文件 /var/log/messages中记录日志信息,可以使用:

  1. $ logger LOG_MESSAGE

例如:

  1. $ logger This is a test log line
  2.  
  3. $ tail -n 1 /var/log/messages
  4. Sep 29 07:47:44 slynux-laptop slynux: This is a test log line

/var/log/messages是一个一般用途的日志文件。如果使用logger命令,它默认记录日志信息到 /var/log/messages中。如果要记录特定的标记(tag),可以使用:

  1. $ logger -t TAG This is a message
  2.  
  3. $ tail -n 1 /var/log/messages
  4. Sep 29 07:48:42 slynux-laptop TAG: This is a message

Syslog处理/var/log下的多个日志文件。但是当logger发送消息时,它用标记字符串来确定应该记录到哪一个日志文件中。syslogd使用与日志相关联的TAG来决定应该将其记录到哪一个文件中。你可以从位于/etc/rsyslog.d/目录的配置文件中看到与日志文件相关联的标记字符串。

要将另一个日志文件的最后一行记录到系统日志中,可以使用:

  1. $ logger -f /var/log/source.log

8.10.3 参考

3.14节讲解了headtail命令。