当前位置: 技术问答>linux和unix
请问:linux下的C编程中的syslog()怎么用? ----阿菜
来源: 互联网 发布时间:2014-11-24
本文导语: 请问:linux下的C编程中的syslog()怎么用? ----阿菜 | 守护进程是脱离于任何终端的,所以他的任何信息都无法直接输出到标准输出设备...
请问:linux下的C编程中的syslog()怎么用?
----阿菜
----阿菜
|
守护进程是脱离于任何终端的,所以他的任何信息都无法直接输出到标准输出设备和标准错误输出设备中,在Linux系统中提供了syslog()系统调用来解决这个问题。syslog()在shslog.h定义如下:
#include
void syslog(int priority,char *format,...);
例:
#include
#include
#include
#include
void main(void)
{
if (fork()==0) {
for (;;) {
syslog(LOG_USER|LOG_INFO,"syslog programming testn");
sleep(10);
}
}
}
检验:
tail -f /var/log/messages
Mar 22 01:42:51 foxman log: syslog programming test
Mar 22 01:43:31 foxman last message repeated 4 times
Mar 22 01:44:31 foxman last message repeated 6 times
Mar 22 01:45:31 foxman last message repeated 6 times
Mar 22 01:46:21 foxman last message repeated 5 times
--------------------------------------------------------------------------------
void openlog( char *ident, int option, int facility)
void syslog( int priority, char *format, ...)
void closelog( void )
option
用於openlog()的option参数可以是以下几个的组合:
LOG_CONS : 如果送到system logger时发生问题,直接写入系统console。
LOG_NDELAY : 立即开启连接(通常,连接是在第一次写入讯息时才打开的)。
LOG_PERROR : 将讯息也同时送到stderr
LOG_PID : 将PID含入所有讯息中
facility
facility参数用来指定何种程式在记录讯息,这可让设定档来设定何种讯息如何处理。
LOG_AUTH : 安全/授权讯息(别用这个,请改用LOG_AUTHPRIV)
LOG_AUTHPRIV : 安全/授权讯息
LOG_CRON : 时间守护神专用(cron及at)
LOG_DAEMON : 其它系统守护神
LOG_KERN : 核心讯息
LOG_LOCAL0到LOG_LOCAL7 : 保留
LOG_LPR : line printer次系统
LOG_MAIL : mail次系统
LOG_NEWS : USENET news次系统
LOG_SYSLOG : syslogd内部所产生的讯息
LOG_USER(default) : 一般使用者等级讯息
LOG_UUCP : UUCP次系统
level
决定讯息的重要性. 以下的等级重要性逐次递减:
LOG_EMERG : 系统无法使用
LOG_ALERT : 必须要立即采取反应行动
LOG_CRIT : 重要状况发生
LOG_ERR : 错误状况发生
LOG_WARNING : 警告状况发生
LOG_NOTICE : 一般状况,但也是重要状况
LOG_INFO : 资讯讯息
LOG_DEBUG : 除错讯息
#include
void syslog(int priority,char *format,...);
例:
#include
#include
#include
#include
void main(void)
{
if (fork()==0) {
for (;;) {
syslog(LOG_USER|LOG_INFO,"syslog programming testn");
sleep(10);
}
}
}
检验:
tail -f /var/log/messages
Mar 22 01:42:51 foxman log: syslog programming test
Mar 22 01:43:31 foxman last message repeated 4 times
Mar 22 01:44:31 foxman last message repeated 6 times
Mar 22 01:45:31 foxman last message repeated 6 times
Mar 22 01:46:21 foxman last message repeated 5 times
--------------------------------------------------------------------------------
void openlog( char *ident, int option, int facility)
void syslog( int priority, char *format, ...)
void closelog( void )
option
用於openlog()的option参数可以是以下几个的组合:
LOG_CONS : 如果送到system logger时发生问题,直接写入系统console。
LOG_NDELAY : 立即开启连接(通常,连接是在第一次写入讯息时才打开的)。
LOG_PERROR : 将讯息也同时送到stderr
LOG_PID : 将PID含入所有讯息中
facility
facility参数用来指定何种程式在记录讯息,这可让设定档来设定何种讯息如何处理。
LOG_AUTH : 安全/授权讯息(别用这个,请改用LOG_AUTHPRIV)
LOG_AUTHPRIV : 安全/授权讯息
LOG_CRON : 时间守护神专用(cron及at)
LOG_DAEMON : 其它系统守护神
LOG_KERN : 核心讯息
LOG_LOCAL0到LOG_LOCAL7 : 保留
LOG_LPR : line printer次系统
LOG_MAIL : mail次系统
LOG_NEWS : USENET news次系统
LOG_SYSLOG : syslogd内部所产生的讯息
LOG_USER(default) : 一般使用者等级讯息
LOG_UUCP : UUCP次系统
level
决定讯息的重要性. 以下的等级重要性逐次递减:
LOG_EMERG : 系统无法使用
LOG_ALERT : 必须要立即采取反应行动
LOG_CRIT : 重要状况发生
LOG_ERR : 错误状况发生
LOG_WARNING : 警告状况发生
LOG_NOTICE : 一般状况,但也是重要状况
LOG_INFO : 资讯讯息
LOG_DEBUG : 除错讯息
|
void openlog( char *ident, int option, int facility)
你可以在程序刚开始的地方去调用该函数,他可以为没有指定优先级和设备的syslog指定优先级,设备和配置选项.如果未使用该函数,程序会在第一次调用syslog时自动使用默认的设置openlog.
void syslog( int priority, char *format, ...)
将后面的表达式输出到syslog中.例如syslog(LOG_NOTICE,"my age is %d",i_Age);
void closelog( void )
一般在程序结束前调用,关闭与syslog的连接.
再讲一下修改/etc/syslog.conf可以改变不同等级和设备的输出的log文件配置.
你可以在程序刚开始的地方去调用该函数,他可以为没有指定优先级和设备的syslog指定优先级,设备和配置选项.如果未使用该函数,程序会在第一次调用syslog时自动使用默认的设置openlog.
void syslog( int priority, char *format, ...)
将后面的表达式输出到syslog中.例如syslog(LOG_NOTICE,"my age is %d",i_Age);
void closelog( void )
一般在程序结束前调用,关闭与syslog的连接.
再讲一下修改/etc/syslog.conf可以改变不同等级和设备的输出的log文件配置.
|
man syslog