这可能只是我的一个愚蠢的错误,但我似乎无法找到它。
我希望在我的控制台和日志文件中看到来自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()
而不是我自己的配置,日志将按预期显示。在这种情况下,日志将打印到我的终端。
我的结论是,我的日志配置有点错误 - 请帮助我。
答案 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
)
现在有效:)