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 ) 都会写入日志,只要记录器的级别已适当设置。
我在尝试启用 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 ) 都会写入日志,只要记录器的级别已适当设置。