我正在用 C++ 实现一个日志处理程序,它工作得很好,但是我发现有一件事是可用的,那就是记录器从哪里获得输出。
我想这并不是什么大问题,但我偶然发现了__func__
标识符,它基本上会保留当前函数的函数名。
所以我在我的 Log 类中有一个名为 的静态函数Write
,它需要一个日志级别和一个变化列表。所以我会这样称呼它:
Log::Write(LOG_DEBUG, "this is an integer: %d", 10);
它会打印:
2013-01-02 => 10:12:01.366 [DEBUG]: this is an integer: 10
但是,我认为在消息中也包含调用者可能会很有用,以产生如下内容:
2013... => 10:12:... (functionName) [DEBUG]: blah
所以我可以做的(当然)是将__func__
作为参数添加到Log::Write
,但这意味着任何时候我打电话Log::Write
我也需要发送__func__
它总是相同的,我觉得应该可以在没有的情况下做到这一点明确表示。
所以我想要的是将提供的功能:
Log::Write(LOG_DEBUG, __func__, "message");
无需每次都显式输入func 。
我不知道这是否真的可行,我最好的选择是有一些方法可以取消引用函数内部的调用者Write
,我似乎不太可能只是“推断”这样的参数. 但至少值得一问,也许我可以看到有哪些选择。
谢谢。