【问题标题】:How to have cout send to console and syslog simultaneously如何让 cout 同时发送到控制台和系统日志
【发布时间】:2017-09-23 13:19:56
【问题描述】:

谁能给出一个创建自定义 cout 的简单示例,我想让 MyCout 类在控制台上打印并同时将字符串发送到 syslog。

MyCout myCout

myCout << "Test" << endl;

我需要将控制台输出“Test”和“Test”发送到 syslog。

【问题讨论】:

  • 不简单。通常我们选择在stringstream 中构建输出,然后将最终结果输出到coutsyslog
  • 仅供参考:您通常不能保证发送到标准输出的输出被发送到控制台。用户可以随意重定向输出。如果你想在控制台坚持,那么你必须直接写到tty(假设进程实际上有一个)。可能类似于使用 curses 库。

标签: c++ cout syslog


【解决方案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;
}

如果您不想输出不同的或自定义的类型,它会变得更加复杂。

【讨论】:

    猜你喜欢
    • 2015-11-07
    • 2017-05-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多