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

Poco::Logger is not logging trace or debug level logs, only information level and above

我在尝试启用 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 文档,这应该足够了。是否有我遗漏的步骤,或者此设置存在固有错误?

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

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