tensorflow的VLOG如何工作?

时间:2017-07-17 10:32:29

标签: tensorflow

我使用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)

这个结果合理吗?

1 个答案:

答案 0 :(得分:7)

您可以通过TF_CPP_MIN_LOG_LEVEL(而不是TF_CPP_MIN_VLOG_LEVEL)来控制日志级别,在您的情况下,您要将其设置为1。

TF_CPP_MIN_VLOG_LEVEL带来了额外的调试信息,实际上是相反的:它的默认值是0,随着它的增加,会记录更多的调试信息。

因此,VLOG级别不是您通常的INFOWARNING等等LOG级别,而是一些不同且排名相反的内容。如果您查看代码,您会看到LOG与日志标签(LOG(INFO) << message)一起使用,但VLOG与普通数字(VLOG(2) << message)一起使用。

VLOG消息实际上始终记录在INFO日志级别。这意味着在任何情况下,您都需要TF_CPP_MIN_LOG_LEVEL 0来查看任何VLOG消息。