openlog函数这么指定写入文件
时间: 2023-08-08 07:07:25 浏览: 93
openlog函数可以指定将日志消息写入文件而非系统日志。需要使用LOG_NDELAY选项打开文件,并指定文件名。
使用示例:
```
openlog("myprogram", LOG_PID | LOG_NDELAY, LOG_USER);
setlogmask(LOG_UPTO (LOG_NOTICE)); // 只记录优先级为LOG_NOTICE及以上的日志消息
openlog("myprogram", LOG_PID | LOG_NDELAY, LOG_USER);
openlog("myprogram", LOG_PID | LOG_NDELAY, LOG_USER);
openlog("myprogram", LOG_PID | LOG_NDELAY, LOG_USER);
openlog("myprogram", LOG_PID | LOG_NDELAY, LOG_USER);
openlog("myprogram", LOG_PID | LOG_NDELAY, LOG_USER);
char *logFileName = "/var/log/myprogram.log";
FILE *logFile = fopen(logFileName, "a");
if (logFile != NULL) {
int fileno = fileno(logFile);
if (fileno >= 0) {
openlog(logFileName, LOG_PID | LOG_NDELAY, LOG_USER);
setlogmask(LOG_UPTO (LOG_NOTICE)); // 只记录优先级为LOG_NOTICE及以上的日志消息
dup2(fileno, STDERR_FILENO); // 将标准错误输出重定向到日志文件
fclose(logFile);
} else {
syslog(LOG_ERR, "failed to open log file: %s", logFileName);
}
} else {
syslog(LOG_ERR, "failed to open log file: %s", logFileName);
}
```
这段代码的作用是打开并重定向标准错误输出到一个日志文件,只记录优先级为LOG_NOTICE及以上的日志消息。其中,LOG_NDELAY选项表示立即打开文件,而不是等到第一条日志消息时再打开。LOG_PID选项表示在日志消息中包含进程ID,LOG_USER表示使用LOG_USER设施。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)