gpt4 book ai didi

c++ - 如何编写在C++中进行实际日志记录的变量参数记录器函数

转载 作者:行者123 更新时间:2023-12-02 10:18:21 25 4
gpt4 key购买 nike

我正在用C++写一个logger类,我想将所有日志从不同的文件重定向到一个决定在哪里写日志的函数。

例如,

func A()
{
int a =10;
std::string b = "test";
cout<<"printing"<<a<<b<<endl;
}

func B()
{
unsigned long t = 6700;
cout<<t<<endl;
}

我不想使用cout而不是cout,它需要一个带有可变参数的函数并发送给通用函数,该函数最终将输出或写入文件或使用过的syslog中。

最佳答案

如果您尝试了类似这样的简单操作,该怎么办?

std::unique_ptr<std::ostream> g_ostream_ptr;


std::ostream& log() {
return *g_ostream_ptr;
}

void initialize_log() {
// initialize `g_ostream_ptr` based on environment variable
// or other configuration information.
const char* filename = std::getenv("LOG_FILE");
if (!filename)
filename = "/dev/stdout"

g_ostream_ptr = std::make_unique<std::ostream>(filename);
}

然后,您可以像这样使用它:
void f() {
log() << “f called.” << std::endl;
}

您可能必须确保在某个时刻调用 initialize_log,或者使用 std::call_once,或者仅通过 main()对其进行调用。

关于c++ - 如何编写在C++中进行实际日志记录的变量参数记录器函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61162258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com