Poco :: Logger不记录跟踪或调试级别日志,仅记录信息级别及更高级别

时间:2016-02-03 19:26:55

标签: c++ poco-libraries

我在尝试启用poco_trace和poco_debug日志时遇到问题。我使用Logger :: setLevel()来设置PRIO_TRACE的级别,但我仍然没有看到任何优先级低于写入我的日志的PRIO_INFORMATION。这是相关的代码。

//  ... In the constructor  of my main class
//  All Loggers in the program inherit from the Logger found here.

getLogger().setChannel( channel );
getLogger().setLevel( Poco::Message::PRIO_TRACE );

//  This prints "Level is 8" to the log, 8 being Message::PRIO_TRACE.
poco_information_f1( getLogger(), "Level is %i", getLogger().getLevel() );
//  This however is not printed to the log.
poco_trace( getLogger(), "Trace logging is enabled" );

//  ...

//  Definition of getLogger()
inline Poco::Logger& Application::getLogger() const
{   
    //  Where logger is a class member of type Poco::Logger*
    poco_check_ptr( logger );
    return *logger;
}

据我所知,从Poco文档来看,这应该足够了。我是否缺少一个步骤,或者这个设置本质上是错误的?

1 个答案:

答案 0 :(得分:4)

在仔细阅读Poco :: Logger.h之后,我发现poco_trace和poco_debug宏被#if defined(_DEBUG)块包围,这意味着当Poco本身在调试模式下构建时,它们只会打印到日志。

这感觉就像一个奇怪的决定,因为Logger :: trace(),Logger:debug()和Logger :: log(Message)都会写入日志,只要记录器的级别已经适当设置。 / p>