//main.cpp
#include <syslog.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string>
#include <assert.h>
int foo(void) {
int fd = 0;
fd = open("1.log",O_RDWR | O_CREAT | O_APPEND,0644); /* 1.log的文件描述符是fd */
if( -1 == fd) {
printf("open 1.log file failed \n");
return -1;
}
close(STDERR_FILENO); /* 关闭STDERR_FILENO描述符 */
dup2(fd,STDERR_FILENO); /* 复制文件描述符fd到STDERR_FILENO */
close(fd); /* 关闭文件描述符fd */
openlog("1.log",LOG_PERROR,LOG_DAEMON); /* 根据LOG_PERROR,将日志输出STDERR_FILENO定向到1.log */
return 0;
}
int main () {
int ret = 0;
ret = foo();
if (0 != ret) {
printf("error\n");
}
syslog(LOG_DEBUG,"hello world\n");
return 0;
}
/*
g++ main.cpp
./a.out
cat 1.log
1.log: hello world
*/
将终端打印定向到log文件中
最新推荐文章于 2024-07-25 23:14:40 发布
本文介绍了一个使用C++进行日志输出的例子,通过复制文件描述符将标准错误输出重定向到指定的日志文件中,并利用syslog进行日志记录。
1447

被折叠的 条评论
为什么被折叠?



