我在尝试启用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文档来看,这应该足够了。我是否缺少一个步骤,或者这个设置本质上是错误的?
答案 0 :(得分:4)
在仔细阅读Poco :: Logger.h之后,我发现poco_trace和poco_debug宏被#if defined(_DEBUG)
块包围,这意味着当Poco本身在调试模式下构建时,它们只会打印到日志。
这感觉就像一个奇怪的决定,因为Logger :: trace(),Logger:debug()和Logger :: log(Message)都会写入日志,只要记录器的级别已经适当设置。 / p>