如何让 cout 同时发送到控制台和系统日志
Posted
技术标签:
【中文标题】如何让 cout 同时发送到控制台和系统日志【英文标题】:How to have cout send to console and syslog simultaneously 【发布时间】:2017-09-23 13:19:56 【问题描述】:谁能给出一个创建自定义 cout 的简单示例,我想让 MyCout 类在控制台上打印并同时将字符串发送到 syslog。
MyCout myCout
myCout << "Test" << endl;
我需要将控制台输出“Test”和“Test”发送到 syslog。
【问题讨论】:
不简单。通常我们选择在stringstream
中构建输出,然后将最终结果输出到cout
和syslog
。
仅供参考:您通常不能保证发送到标准输出的输出被发送到控制台。用户可以随意重定向输出。如果你想在控制台坚持,那么你必须直接写到tty(假设进程实际上有一个)。可能类似于使用 curses 库。
【参考方案1】:
简单的解决方案(仅适用于 C 风格的字符串):
#include <iostream>
using namespace std;
void syslog(const char* msg)
std::cout << "syslog " << msg;
struct MyCout
void operator<< (const char* rhs)
std::cout << rhs << "\n";
syslog(rhs);
;
int main()
MyCout myCout;
myCout << "Test";
return 0;
如果您不想输出不同的或自定义的类型,它会变得更加复杂。
【讨论】:
以上是关于如何让 cout 同时发送到控制台和系统日志的主要内容,如果未能解决你的问题,请参考以下文章