SYSLOG - Linux手册页

时间:2019-08-20 18:00:03  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

closelog,openlog,syslog,vsyslog-将消息发送到系统记录器

语法

#包括

void openlog(const char * ident,int选项,int工具);
void syslog(int优先级,const char * format,...);
void closelog(void);

void vsyslog(int优先级,const char * format,va_list ap);

glibc的功能测试宏要求(请参阅feature_test_macros(7)):

vsyslog():
从glibc 2.19开始:
_DEFAULT_SOURCE
Glibc 2.19及更早版本:
_BSD_SOURCE

说明

openlog()

openlog()打开与程序的系统记录器的连接。

ident指向的字符串在每个消息之前,通常设置为程序名称。如果ident为NULL,则使用程序名称。 (当ident为NULL时,POSIX.1-2008未指定行为。)

option参数指定用于控制openlog()的操作以及对syslog()的后续调用的标志。如果在后续对syslog()的调用中未指定任何内容,则设施参数将建立默认值。可能为选项和功能指定的值如下所述。

openlog()的使用是可选的;如有必要,它将由syslog()自动调用,在这种情况下,ident默认为NULL。

syslog() and vsyslog()

syslog()生成一条日志消息,该消息将由syslogd(8)分发。

优先级参数是通过将设施值和级别值(或以下所述)进行"或"运算而形成的。如果没有设施值被或运算为优先级,则使用由openlog()设置的默认值,或者,如果之前没有进行openlog()调用,则使用默认值LOG_USER。

其余参数是一种格式,如printf(3)所示,以及该格式所需的任何参数,除了两个字符序列%m将被错误消息字符串strerror(errno)替换。格式字符串不必包含换行符。

vsyslog()函数执行与syslog()相同的任务,不同之处在于它采用了一组使用stdarg(3)变量自变量列表宏获取的自变量。

closelog()

closelog()关闭用于写入系统记录器的文件描述符。 closelog()的使用是可选的。

Values for option

openlog()的option参数是一个位掩码,是通过将以下任何值进行或运算而构造的:

LOG_CONS
如果在发送到系统记录器时出错,则直接写到系统控制台。
LOG_NDELAY
立即打开连接(通常,在记录第一条消息时打开连接)。例如,如果随后的chroot(2)使日志记录工具内部使用的路径名不可访问,则这可能很有用。
LOG_NOWAIT
不要等待记录消息时已创建的子进程。 (GNU C库不会创建子进程,因此此选项在Linux上无效。)
LOG_ODELAY
与LOG_NDELAY相反;连接的打开被延迟,直到调用syslog()为止。 (这是默认设置,无需指定。)
LOG_PERROR
(不在POSIX.1-2001或POSIX.1-2008中。)还将消息记录到stderr。
LOG_PID
在每条消息中都包括呼叫者的PID。

Values for facility

工具参数用于指定记录消息的程序类型。这使配置文件可以指定来自不同设施的消息将被不同地处理。

LOG_AUTH
安全/授权消息
LOG_AUTHPRIV
安全/授权消息(私人)
LOG_CRON
时钟守护程序(cron和at)
LOG_DAEMON
没有单独设施值的系统守护程序
LOG_FTP
ftp守护程序
LOG_KERN
内核消息(无法从用户进程生成)
LOG_LOCAL0through LOG_LOCAL7
保留供本地使用
LOG_LPR
行式打印机子系统
LOG_MAIL
邮件子系统
LOG_NEWS
USENET新闻子系统
LOG_SYSLOG
syslogd(8)内部生成的消息
LOG_USER(default)
通用用户级消息
LOG_UUCP
UUCP子系统

Values for level

这确定了消息的重要性。这些级别按重要性从高到低的顺序为:

LOG_EMERG
系统无法使用
LOG_ALERT
必须立即采取行动
LOG_CRIT
关键条件
LOG_ERR
错误条件
LOG_WARNING
警告条件
LOG_NOTICE
正常但重要的状况
LOG_INFO
信息性消息
LOG_DEBUG
调试级消息

函数setlogmask(3)可用于仅将日志记录限制为指定级别。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
openlog(),closelog()Thread safetyMT-Safe
syslog(),vsyslog()Thread safetyMT-Safe env locale

遵循规范

在SUSv2,POSIX.1-2001和POSIX.1-2008中指定了函数openlog(),closelog()和syslog()(但不包括vsyslog())。

POSIX.1-2001仅为设施指定LOG_USER和LOG_LOCAL *值。但是,除LOG_AUTHPRIV和LOG_FTP之外,其他功能值出现在大多数UNIX系统上。

POSIX.1-2001或POSIX.1-2008未指定选项的LOG_PERROR值,但在大多数UNIX版本中可用。

备注

openlog()调用中的参数ident可能原样存储。因此,如果它所指向的字符串被更改,则syslog()可能会开始在更改后的字符串前添加前缀,并且如果它所指向的字符串不再存在,则结果是不确定的。最可移植的是使用字符串常量。

切勿以用户提供的数据作为格式传递字符串,而应使用以下内容:

syslog(priority, "%s", string);

另外参见

journalctl(1),logger(1),setlogmask(3),syslog.conf(5),syslogd(8)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/