系统日志
UNIX 系统有一个非常灵活和强大的日志系统,它让你能够记录几乎任何你能想象的东西,然后你可以操作日志来获取你需要的信息。

创新互联建站基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业成都服务器托管报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
许多版本的 UNIX 提供了一个名为 syslog 的通用日志工具,有信息需要记录的单独程序要将信息发送到 syslog。
Unix syslog 是一个主机可配置的,统一的系统日志工具。该系统采用集中式的系统日志进程,其运行程序 /etc/syslogd 或者 /etc/syslog。
系统记录器的操作是相当简单的。程序发送日志条目到 syslogd,其将会在配置文件 /etc/syslogd.conf 或 /etc/syslog 中查找,当找到一个匹配后,将日志消息写入到期望的日志文件中。
现有你应该了解的四种基本日志术语:
| 术语 | 描述 |
|---|---|
| Facility | 此标识符用来描述提交的日志信息的应用程序或进程。例如邮件,内核和 FTP。 |
| Priority | 一个显示消息重要性的指示器。syslog 作为准则定义了消息的级别,从调试信息到关键事件。 |
| Selector | 一个或更多的 facility 和 level 的结合体 。当一个输入事件匹配一个 selector 时,一个 action 会被执行。 |
| Action | 传入的消息匹配 selector 时会发生的事情。Action 可以将消息写入日志文件,将消息回传到控制台或其他设备,将消息写入到一个登录用户,或将消息发送到另一个日志服务器。 |
Syslog Facilities
下面是 selector 可用的 facility。不是所有的 facility 都存在于所有版本的 UNIX。
| Facility | 描述 |
|---|---|
| auth | 需要用户名和密码的相关活动(getty,su,login) |
| authpriv | 类似于 auth 的认证,但是记录的文件只能被授权的用户读取。 |
| console | 用于捕获信息,这些信息一般会传向系统控制台。 |
| cron | 与 cron 系统有关的计划任务信息。 |
| daemon | 所捕获的所有系统守护进程信息。 |
| ftp | ftp 守护进程相关的信息。 |
| kern | 内核信息。 |
| local0.local7 | 用户自定义使用的本地信息。 |
| lpr | 与打印服务系统有关的信息。 |
| 与邮件系统相关的信息。 | |
| mark | 用于生产日志文件中时间戳的伪事件。 |
| news | 与网络新闻传输协议( nntp )有关的信息。 |
| ntp | 与网络时间协议有关的信息。 |
| user | 普通用户进程产生的信息。 |
| uucp | UUCP 子系统生成的信息。 |
Syslog 优先级
syslog 的优先级( Priority )如下表:
| Priority | 描述 |
|---|---|
| emerg | 紧急情况,如即将发生的系统崩溃,通常会广播到所有用户。 |
| alert | 需要立即修改的情况,如系统数据库的损坏。 |
| crit | 关键的情况,如一个硬件的错误。 |
| err | 普通错误。 |
| warning | 警告 |
| notice | 不是一个错误的情况,但是可能需要用特定方式的处理一下。 |
| info | 报告性的消息。 |
| debug | 用于调试程序的消息。 |
| none | 没有重要级别,通常用于指定非日志的消息。 |
facility 和 level 的组合能够让你辨别记录了什么和这些日志信息去哪儿了。
每个程序尽职尽责地向系统记录器发送消息,记录器基于 selector 定义的 level 决定跟踪什么和舍弃什么信息。
当你指定了一个 level,系统会记录这一 level 及更高 level 的一切信息。
文件 /etc/syslog.conf
文件 /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文件中的每一行包含两部分:
- 一个消息 selector,其指定了哪种消息用来记录。例如,内核的所有错误信息或所有调试信息。
- 一个 action,其指明了对接收的消息该怎么处理。例如,写入一个文件中或者将消息发送到用户的终端。
下面是上述配置的注意事项:
- 消息 selector 有两部分:facility 和 priority。例如, kern.debug 选择了所有由内核( facility )产生的的调试信息( priority )。
- 消息 selectetor kern.debug 选择了所有 priority 大于 debug 的信息。
- 在任何 facility 和 priority 位置上的星号,表示“所有”的意思。例如, *.debug 表示所有 facility 的调试信息,而 kern.* 表示内核所产生的所有信息。
- 你也可以用逗号来指定多个 facility。两个或两个以上的 selectetor 可以用分号组合在一起。
日志记录 Action
action 部分指定了下面五个 action 中的其中一个:
- 将信息记录到一个文件或设备。例如,
/var/log/lpr.log或者/dev/console。 - 发送一个消息给一个用户。你可以用逗号分开指定多个用户名(例如,root,amrood)。
- 发送一个消息给所有用户。在这种情况下,action 部分包含了一个星号(例如,*)。
- 用管道发送消息到程序。在这种情况下,程序是在 UNIX 管道符号(|)后指定。
- 将消息发送到另一台主机上的 syslog。在这种情况下,action 部分包含了一个前面有 at 符号的主机名(例如,@cdcxhl.com)。
logger 命令
UNIX 提供了 logger 命令,这是处理系统日志记录的一个非常有用的命令。logger 命令发送日志消息到 syslogd 守护进程,从而驱使系统记录日志。
这意味着我们可以随时用命令行检查 syslogd 守护进程及其配置。logger 命令提供了一种在命令行上添加一行条目到系统日志文件中的方法。
该命令的格式是:
logger [-i] [-f file] [-p priority] [-t tag] [message]...下面是具体的参数细节:
| 选项 | 描述 |
|---|---|
| -f filename | 使用文件 filename 的内容作为消息来记录。 |
| -i | 日志的每一行都记录进程的 id。 |
| -p priority | 指定输入消息的优先级 priority(指定的 selector),优先级 priority 可以是数字或者指定为 facility.level 对的格式。默认参数是 user.notice。 |
| -t tag | 用指定 tag 标记记录到日志中的每一行。 |
| message | 字符串参数,它的内容以特定顺序连接在一起,由空格分开。 |
日志轮换
日志文件有快速增长的特点,并消耗大量的磁盘空间。大多数 UNIX 发行版系统使用了工具(如 newsyslog 或 logrotate)启用日志轮换功能。
这些工具由 cron 守护进程在一个频繁的时间间隔里调用。你可以在 newsyslog 或 logrotate 的手册页中获取更多的细节内容。
重要日志文件的位置
所有的系统应用程序创建自己的日志文件在 /var/log 和它的子目录里。下面这里有几个重要的应用,其相应的日志目录:
| 应用 | 目录 |
|---|---|
| httpd | /var/log/httpd |
| samba | /var/log/samba |
| cron | /var/log/ |
| /var/log/ | |
| mysql | /var/log/ |
本文标题:创新互联UNIX教程:UNIX 系统日志
文章转载:http://www.jxjierui.cn/article/cdphcoe.html


咨询
建站咨询
