syslogd - 记录系统消息
/usr/sbin/syslogd [-d] [-f configfile] [-m markinterval] [-p path] [-t | -T]
syslogd 可根据消息的优先级以及生成消息的系统工具读取系统消息,并将其转发到适当的日志文件或用户。配置文件 /etc/syslog.conf(请参见 syslog.conf(5))可控制将消息转发到的位置。syslogd 将每 markinterval 分钟(缺省为 20 分钟)记录一次优先级为 LOG_INFO 的标记(时间戳)消息,并将该消息记录到在 syslog.conf 文件中命名为 mark 的工具中。
系统消息包括单行文本,其前缀可能为括在尖括号 (< >) 中的优先级代码编号;优先级可在 <sys/syslog.h> 中进行定义。
syslogd 可从 STREAMS 日志驱动程序 /dev/log 以及 /etc/netconfig、/etc/net/transport/hosts 和 /etc/net/transport/services 中指定的任何传输提供程序读取消息。
syslogd 将在启动时读取配置文件,一旦它收到 HUP 信号(请参见 signal.h(3HEAD)),并关闭已打开的所有文件,它就会再次读取其配置文件,然后仅打开该配置文件中列出的日志文件。syslogd 将在收到 TERM 信号时退出。
syslogd 将在启动时创建文件 /var/run/syslog.pid,如果可能,该文件将包含进程标识符 (PID)。
If message ID generation is enabled (see log(4D)), each message will be preceded by an identifier in the following format: [ID msgid facility.priority]. msgid is the message's numeric identifier described in msgid(8). facility and priority are described in syslog.conf(5). [ID 123456 kern.notice] is an example of an identifier when message ID generation is enabled.
如果消息是从可装入的内核模块或驱动程序生成的,则会显示内核模块名称(例如 ufs),而不是 unix。请参见”示例“部分以了解在启用和不启用消息 ID 生成的情况下 syslogd 的输出样例。
为了减少视觉混乱,在将消息写入控制台时,不会显示消息 ID;消息 ID 仅写入日志文件。请参见“示例”部分。
/etc/default/syslogd 文件包含缺省参数设置,如果未选择 –t 或 –T 选项,则这些缺省设置将生效。
The recommended way to allow or disallow message logging is through the use of the service management facility (smf(7)) instance svc:/system/system-log:default property:
config/log_from_remote
该属性用于指定是否记录远程消息。log_from_remote=true 等效于 –t 命令行选项,而 false 等效于 –T 命令行选项。The default value for log_from_remote is false.请参见“附注”部分。
指定是否记录远程消息。LOG_FROM_REMOTE=NO 等效于 –t 命令行选项。LOG_FROM_REMOTE 的缺省值为 YES。
支持以下选项:
启用调试功能。只有当系统处于多用户模式时,才应在 root shell 中以交互方式使用该选项。该选项不应在系统启动脚本中使用,因为在启动 syslogd 时会使系统挂起。
指定备用配置文件。
指定标记消息之间的间隔(以分钟为单位)。
指定备用日志设备名称。缺省值为 /dev/log。
启用 syslogd UDP 端口以启用远程消息日志记录。这是缺省行为。
禁用 syslogd UDP 端口以禁用远程消息日志记录。
以下示例说明了未启用消息 ID 生成时 syslogd 的输出:
Sep 29 21:41:18 cathy unix: alloc /: file system full示例 2 启用消息 ID 生成时 syslogd 的输出
以下示例说明了已启用消息 ID 生成时 syslogd 的输出。在将消息写入日志文件 /var/adm/messages 时,将显示消息 ID。
Sep 29 21:41:18 cathy ufs: [ID 845546 kern.notice] alloc /: file system full示例 3 启用消息 ID 生成时 syslogd 的输出
以下示例说明了在已启用消息 ID 生成的情况下将消息写入控制台时的 syslogd 输出:即使已启用消息 ID,控制台上也不会显示消息 ID。
Sep 29 21:41:18 cathy ufs: alloc /: file system full示例 4 启用接受来自远程系统的 UDP 消息
以下命令将使 syslogd 可以接受来自远程系统的条目。
# svccfg -s svc:/system/system-log:default setprop \ config/log_from_remote=true # svcadm restart svc:/system/system-log
配置文件
进程 ID
包含缺省设置。可以通过命令行选项覆盖某些设置。
STREAMS 日志驱动程序
系统上可用的传输提供程序
每次传输所使用的网络主机
每次传输所使用的网络服务
有关下列属性的说明,请参见 attributes(7):
|
logger(1), svcs(1), syslog(3C), signal.h(3HEAD), log(4D), syslog.conf(5), attributes(7), smf(7), msgid(8), svcadm(8), svccfg(8)
mark 消息是一个系统时间戳,因此,只有运行 syslogd 的系统才会定义该消息。它不能转发到其他系统。
如果 syslogd 收到 HUP 信号,则它会尝试完成输出暂挂消息,然后关闭当前用于记录消息的所有日志文件。如果其中一个或多个文件由于某些原因没有在宽限期内关闭,则 syslogd 将放弃暂挂消息,强制关闭这些文件,并启动重新配置。如果出现意外错误,从而影响到这一关闭过程,致使 syslogd 无法完成重新配置,则 syslogd 将向当前系统的超级用户发送一封邮件消息,指出它已关闭,然后退出。
请务必确保显示 syslogd 转发的消息的每个窗口(尤其是控制台窗口)都在系统缺省语言环境(即 syslogd 的语言环境)下运行。如果不遵循这一建议,syslog 消息就可能更改该窗口的终端设置,甚至可能会从该窗口远程执行任意命令。
syslogd 服务由服务管理工具 smf(7) 管理,其服务标识符为:
svc:/system/system-log:default
可以使用 svcadm(8) 来对此服务执行管理操作(如启用、禁用或请求重新启动)。可以使用 svcs(1) 命令来查询服务的状态。
When syslogd is started by means of svcadm(8), if a value is specified for LOG_FROM_REMOTE in the /etc/defaults/syslogd file, the SMF instance svc:/system/system-log:default property config/log_from_remote is set to correspond to the LOG_FROM_REMOTE value and the /etc/default/syslogd file is modified to replace the LOG_FROM_REMOTE specification with the following comment:
# LOG_FROM_REMOTE is now set using svccfg(8), see syslogd(8).
If neither LOG_FROM_REMOTE nor SMF instance svc:/system/system-log:default property config/log_from_remote are defined, the default is to log remote messages.
On installation, the initial value of SMF instance svc:/system/system-log:default property config/log_from_remote is false.