TensorFlow日志未显示在控制台和文件中

时间:2016-09-20 08:59:44

标签: python python-3.x logging tensorflow

这可能只是我的一个愚蠢的错误,但我似乎无法找到它。

我希望在我的控制台和日志文件中看到来自TensorFlow的日志,这些日志文件适用于我的所有代码,但是TensorFlow部分。

我已经配置了这样的日志记录:

from logging.config import dictConfig
...
# Setup Logging
LOGGING_CONFIG = dict(
    version=1,
    formatters={
        # For files
        'detailed': {'format':
              '%(asctime)s %(name)-12s %(levelname)-8s %(message)s'},
        # For the console
        'console': {'format':
              '[%(levelname)s] %(message)s'}
    },
    handlers={
        'console': {
            'class': 'logging.StreamHandler',
            'level': logging.DEBUG,
            'formatter': 'console',
        },
        'file': {
            'class': 'logging.handlers.RotatingFileHandler',
            'level': logging.DEBUG,
            'formatter': 'detailed',
            'filename': LOG_FILE,
            'mode': 'a',
            'maxBytes': 10485760,  # 10 MB
            'backupCount': 5
        }
    },
    root={
        'handlers': ['console', 'file'],
        'level': logging.DEBUG,
    },
)
dictConfig(LOGGING_CONFIG)

我研究了这个问题,并了解到我必须使用以下内容启用TensorFlow中的日志记录:

import tensorflow as tf
...
tf.logging.set_verbosity(tf.logging.INFO)

不幸的是,这似乎不起作用 - 日志没有显示出来。如果我使用logging.basicConfig()而不是我自己的配置,日志将按预期显示。在这种情况下,日志将打印到我的终端。

我的结论是,我的日志配置有点错误 - 请帮助我。

1 个答案:

答案 0 :(得分:1)

阅读Good logging practice in Python后,我发现了自己的错误。默认情况下调用dictConfig会禁用现有记录器 - 我必须在配置中添加另一个密钥来解决此问题(disable_existing_loggers):

# Setup Logging
LOGGING_CONFIG = dict(
    version=1,
    formatters={
        # For files
        'detailed': {'format':
              '%(asctime)s %(name)-12s %(levelname)-8s %(message)s'},
        # For the console
        'console': {'format':
              '[%(levelname)s] %(message)s'}
    },
    handlers={
        'console': {
            'class': 'logging.StreamHandler',
            'level': logging.DEBUG,
            'formatter': 'console',
        },
        'file': {
            'class': 'logging.handlers.RotatingFileHandler',
            'level': logging.DEBUG,
            'formatter': 'detailed',
            'filename': LOG_FILE,
            'mode': 'a',
            'maxBytes': 10485760,  # 10 MB
            'backupCount': 5
        }
    },
    root={
        'handlers': ['console', 'file'],
        'level': logging.DEBUG,
    },
    disable_existing_loggers=False
)

现在有效:)