我使用VLOG打印日志,VLOG定义如下:
#define VLOG_IS_ON(lvl) \
((lvl) <= ::tensorflow::internal::LogMessage::MinVLogLevel())
#endif
#define VLOG(lvl) \
if (TF_PREDICT_FALSE(VLOG_IS_ON(lvl))) \
::tensorflow::internal::LogMessage(__FILE__, __LINE__, tensorflow::INFO)
const int INFO = 0; // base_logging::INFO;
const int WARNING = 1; // base_logging::WARNING;
const int ERROR = 2; // base_logging::ERROR;
const int FATAL = 3; // base_logging::FATAL;
const int NUM_SEVERITIES = 4; // base_logging::NUM_SEVERITIES;
如果我用警告配置最小日志级别,我使用导出TF_CPP_MIN_VLOG_LEVEL = 1,我想要的是仅日志打印WANRING并包括ERROR,TATAL,但事实上只显示由<调用的警告和INFO日志/ p>
VLOG(INFO) and VLOG(WARN)
这个结果合理吗?
答案 0 :(得分:7)
您可以通过TF_CPP_MIN_LOG_LEVEL
(而不是TF_CPP_MIN_VLOG_LEVEL
)来控制日志级别,在您的情况下,您要将其设置为1。
TF_CPP_MIN_VLOG_LEVEL
带来了额外的调试信息,实际上是相反的:它的默认值是0,随着它的增加,会记录更多的调试信息。
因此,VLOG
级别不是您通常的INFO
,WARNING
等等LOG
级别,而是一些不同且排名相反的内容。如果您查看代码,您会看到LOG
与日志标签(LOG(INFO) << message
)一起使用,但VLOG
与普通数字(VLOG(2) << message
)一起使用。
VLOG
消息实际上始终记录在INFO
日志级别。这意味着在任何情况下,您都需要TF_CPP_MIN_LOG_LEVEL
0来查看任何VLOG
消息。