您的位置:首页 > 运维架构 > Linux

在linux系统中将自己程序的日志输出到自己定义的文件

2012-11-12 13:27 495 查看
很简单, 打开文件/写入文件.

bash脚本: echo "message" >> /path/to/yourlogfile

c: 这个就不用说了吧, fopen("/path/to/yourlogfile", "a"); 然后调用fwrite
如果希望printf/fprintf(stderr,等标准输出/标准错误输出直接输出到日志, 用dup2:
#include <stdio.h>
#include <unistd.h>
int main()
{
FILE *fp = fopen("log.txt", "a");
if(fp){
int no = fileno(fp);
dup2(no, 1);
dup2(no, 2);
printf("stdout log\n");
fprintf(stderr, "stderr log\n");
fclose(fp);
}
return 0;
}

在C和C++中把标准输出重定向到指定文件。

2010-08-27 13:54:38| 分类: C++语言 | 标签:标准输出 文件 memcpy cout endl |字号 订阅问题内容:在C和C++中把标准输出重定向到指定文件。C++的实现 #include <ios> #include <iostream> #include <fstream> //若使用包含.h文件方式则编译报错 using namespace std; int main() { ofstream ofs("e:\\a.txt"); streambuf *osb = cout.rdbuf(ofs.rdbuf()); cout << "to file" << endl; cout.rdbuf(osb); cout << "to term" << endl; return 0; } C实现1#include <stdio.h> #include <string.h> void main() { FILE old_stdout; FILE *fp = fopen("e:\\a.txt", "w"); memcpy(&old_stdout, &_iob[1], sizeof(FILE)); memcpy(&_iob[1], fp, sizeof(FILE)); /*call any functions..*/ printf("to file"); /**/ /*把缓冲刷新到文件*/ fflush(stdout); memcpy(&_iob[1], &old_stdout, sizeof(FILE)); printf("to term"); fclose(fp); } C实现2:: #include<iostream>#include<fstream>using namespace std; int main(){ freopen("intput.txt","r",stdin); freopen("output.txt","w",stdout); double a; cin>>a; cout<<"Jackie"<<endl; return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: