TensorFlow中的log共有INFO、WARN、ERROR、FATAL 4种级别。有以下几种设置方式。
1. 通过设置环境变量控制log级别
可以通过环境变量TF_CPP_MIN_LOG_LEVEL
进行设置,TF_CPP_MIN_LOG_LEVEL
的不同值的含义分别如下:
Level | Level for Humans | Level Description |
---|---|---|
0 | DEBUG | all messages are logged (Default) |
1 | INFO | INFO messages are not printed |
2 | WARNING | INFO and WARNING messages are not printed |
3 | ERROR | INFO, WARNING, and ERROR messages are not printed |
设置TF_CPP_MIN_LOG_LEVEL
的值,屏蔽该级别以及更低级别的日志,如:设置为1,表示屏蔽自己级别的INFO和更低级别的DEBUG日志。
设置环境变量,有两种方式,一种是永久设置,一种临时性设置。
- 永久设置
- 修改环境变量:将
export TF_CPP_MIN_LOG_LEVEL=1
加入到Linux的~/.bashrc、~/.zshrc或/etc/profile
配置文件中,其中加入到/etc/profile
文件是对所有用户都有效。可以在配置文件中设置为1或者2,不建议设置为更高级别的3.
- 修改环境变量:将
- 临时性设置
- 终端中输入
export TF_CPP_MIN_LOG_LEVEL="1"
- python代码实现方法
ps:os.environ是一个mapping,一系列的键、值对存储在该mapping中,系统环境信息全部存储在该mapping中。如果是import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = "1"
print(os.environ['HOME'])
这样输出信息,调用的是getenv("HOME")
函数,如果环境变量被改变,将会调用putenv()
函数进行修改。 - python代码中一种错误的设置方法:
– 错误用法os.system("export TF_CPP_MIN_LOG_LEVEL=1")
- 不能使用的原因 — 不能通过shell的子进程改变shell的环境变量 — 具体可以参考 stackoverflow alex的回答。
- 终端中输入
2.通过 tf.logging 模块进行设置 – 推荐
python代码中可以添加如下部分代码进行设置。
import tensorflow as tf
tf.logging.set_verbosity(tf.logging.ERROR)
tf.logging.ERROR可以换成 {DEBUG, INFO, WARN, ERROR, FATAL} 中的任何一个。
这里有所不同,设置ERROR,将输出ERROR、FATAL级别日志。
代码测试:
def main(self):
tf.logging.set_verbosity(tf.logging.ERROR)
tf.logging.debug("debug")
tf.logging.info("info")
tf.logging.warning("warning")
tf.logging.error("error")
tf.logging.fatal("fatal")
if __name__ == '__main__':
tf.app.run()
运行上述代码,可以获得ERROR、FATAL级别日志。