使用TensorFlow C API时如何禁用调试日志输出?
解决C语言环境下TensorFlow调试日志输出问题
一、先排查环境变量设置的正确姿势
你用putenv("TF_CPP_MIN_LOG_LEVEL=3");没生效,大概率是设置时机太晚——必须在TensorFlow初始化任何组件之前调用这个函数。比如:
#include <stdlib.h> #include "tensorflow/c/c_api.h" int main() { // 一定要在所有TF_*函数调用前设置 putenv("TF_CPP_MIN_LOG_LEVEL=3"); // 之后再初始化TensorFlow相关组件 TF_Graph* graph = TF_NewGraph(); // ... 其他业务代码 return 0; }
Windows下也可以用更安全的_putenv_s:
_putenv_s("TF_CPP_MIN_LOG_LEVEL", "3");
如果还是不行,也可以在启动程序前手动设置系统环境变量,比如命令行里先执行:
set TF_CPP_MIN_LOG_LEVEL=3 your_program.exe
二、修改TensorFlow源码默认日志级别
如果上面的方法都无效,再考虑修改源码默认值,步骤如下:
- 找到TensorFlow源码中的
core/platform/default/logging.cc文件(旧版本可能在tensorflow/core/platform/logging.cc)。 - 定位到
TF_CPP_MIN_LOG_LEVEL的默认定义代码,通常是这样:
const int FLAGS_min_log_level = logging_internal::MinLogLevelFromEnv("TF_CPP_MIN_LOG_LEVEL", 0);
- 把默认值
0改成3,修改后:
const int FLAGS_min_log_level = logging_internal::MinLogLevelFromEnv("TF_CPP_MIN_LOG_LEVEL", 3);
- 重新编译TensorFlow的C语言库(
tensorflow.dll/libtensorflow.so等),替换你项目中使用的库文件即可。
补充:TF_CPP_MIN_LOG_LEVEL的级别对应关系:
- 0:显示所有日志(默认)
- 1:过滤INFO级日志
- 2:过滤INFO和WARNING级日志
- 3:过滤INFO、WARNING和ERROR级日志
内容的提问来源于stack exchange,提问作者Gustasvs
相关产品推荐
相关产品推荐

