首页 > 学院 > 开发设计 > 正文

C语言典型代码---系统函数生成log

2019-11-08 01:16:06
字体:
来源:转载
供稿:网友

linux 系统调用LOG生成

#include <syslog.h>int main(int argc, char **argv){ openlog("MySoftMark",LOG_CONS|LOG_PID,0); syslog(LOG_DEBUG,"testmsg of Soft '%s'/n",argv[0]); closelog(); return 0;}

编译生成可执行程序后,运行一次程序将向/var/log/message文件添加一行信息如下: Feb 12 08:48:38 localhost MySoftMark[702]: testmsg of Soft ‘./test.out’

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 包含情报的信息,通常旨在调试一个程序时使用

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表