日志记录模块不写入文件

新手上路,请多包涵

我正在使用 logging 模块,并且我传递了与当前正在运行的其他作业相同的参数:

 import logging
from inst_config import config3

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] - %(message)s',
    filename=config3.GET_LOGFILE(config3.REQUESTS_USAGE_LOGFILE))
logging.warning('This should go in the file.')

if __name__ == '__main__':
    logging.info('Starting unload.')

使用此方法创建文件名:

 REQUESTS_USAGE_LOGFILE = r'C:\RunLogs\Requests_Usage\requests_usage_runlog_{}.txt'.format(
        CUR_MONTH)
def GET_LOGFILE(logfile):
    """Truncates file and returns."""
    with open(logfile, 'w'):
        pass
    return logfile

然而,当我运行它时,它正在创建文件,然后仍然将日志记录信息输出到控制台。我正在运行 Powershell

只是尝试将其放入主语句中,如下所示:

 if __name__ == '__main__':
    logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] - %(message)s',
    filename=config3.GET_LOGFILE(config3.REQUESTS_USAGE_LOGFILE))

    logging.warning('This should go in the file.')

仍然没有运气。

原文由 flybonzai 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 482
2 个回答

您可以尝试在主文件中运行此代码段。

 import logging
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] - %(message)s',
    filename='filename.txt')  # pass explicit filename here
logger = logging.get_logger()  # get the root logger
logger.warning('This should go in the file.')
print logger.handlers   # you should have one FileHandler object

原文由 Forge 发布,翻译遵循 CC BY-SA 4.0 许可协议

我在 logging.basicConfig() 之前添加了以下几行,它对我有用。

 for handler in logging.root.handlers[:]:
    logging.root.removeHandler(handler)

原文由 yue dong 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题