linux c syslog函数
2021-06-03, updated 2021-09-12
openlog, syslog, closelog是一套系统日志写入接口。
|
|
openlog()
是一个可选项,如果没有使用openlog(),会在使用syslog()时自动调用,ident将会是NULL
syslog()
是用来生成log,使用这个log由syslogd
管理
closelog()
用来关闭用来写syslog的文件描述符,是一个可选项。
|
|
编译生成可执行程序后,运行一次程序将向/var/log/message文件添加一行信息如下:
|
|
openlog函数:
参数
ident 是一个标记,ident所表示的字符串将固定地加在每行日志的前面以标识这个日志,通常就写成当前程序的名称以作标记。
option 是下列值取与运算的结果:
- LOG_CONS 直接写入系统控制台,如果有一个错误,同时发送到系统日志记录。
- LOG_NDELAY 立即打开连接(通常,打开连接时记录的第一条消息)。
- LOG_NOWAIT 不要等待子进程,因为其有可能在记录消息的时候就被创建了(GNU C库不创建子进程,所以该选项在Linux上没有影响。)
- LOG_ODELAY 延迟连接的打开直到syslog函数调用。(这是默认情况下,需要没被指定的情况下。)
- LOG_PERROR (不在SUSv3情况下)同时输出到stderr(标准错误文件)。
- LOG_PID 包括每个消息的PID。
facility 是用来指定记录消息程序的类型。它让指定的配置文件,将以不同的方式来处理来自不同方式的消息。 它的值可能为 LOG_KERN、LOG_USER、LOG_MAIL、LOG_DAEMON、LOG_AUTH、LOG_SYSLOG、LOG_LPR、LOG_NEWS、LOG_UUCP、LOG_CRON 或 LOG_AUTHPRIV。
- LOG_AUTH ——认证系统:login、su、getty等
- LOG_AUTHPRIV ——同LOG_AUTH,但只登录到所选择的单个用户可读的文件中
- LOG_CRON ——cron守护进程
- LOG_DAEMON ——其他系统守护进程,如routed
- LOG_FTP ——文件传输协议:ftpd、tftpd
- LOG_KERN ——内核产生的消息
- LOG_LPR ——系统打印机缓冲池:lpr、lpd
- LOG_MAIL ——电子邮件系统
- LOG_NEWS ——网络新闻系统
- LOG_SYSLOG ——由syslogd(8)产生的内部消息
- LOG_USER ——随机用户进程产生的消息
- LOG_UUCP ——UUCP子系统
- LOG_LOCAL0~LOG_LOCAL7 ——为本地使用保留
Syslog为每个事件赋予几个不同的优先级:
- LOG_EMERG ——紧急情况
- LOG_ALERT ——应该被立即改正的问题,如系统数据库破坏
- LOG_CRIT ——重要情况,如硬盘错误
- LOG_ERR ——错误
- LOG_WARNING ——警告信息
- LOG_NOTICE ——不是错误情况,但是可能需要处理
- LOG_INFO ——情报信息
- LOG_DEBUG ——包含情报的信息,通常旨在调试一个程序时使用