Python 记录到标准输出和日志文件

新手上路,请多包涵

我是 python 的新手,开始进入日志记录模块。我想将消息记录到日志文件中并输出到控制台。下面的代码将消息打印到控制台,但我怎样才能将所有消息记录到一个文件中呢?

Logger 对象没有用于记录到文件的函数调用 (basicConfig(filename=))。如何添加此功能?

我在这里先向您的帮助表示感谢。

 import logging

# create logger
logger = logging.getLogger(_name_)
logger.setLevel(logging.DEBUG)

# create console handler and set level to debug
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# create formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# add formatter to ch
ch.setFormatter(formatter)

# add ch to logger
logger.addHandler(ch)

# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

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

阅读 907
2 个回答

您只需要添加另一个处理程序,例如 logging.FileHandler

 fh = logging.FileHandler(r'/path/to/log.txt')
logger.addHandler(fh)

原文由 Brendan Abel 发布,翻译遵循 CC BY-SA 3.0 许可协议

扩展@Brendan 的回答。

您的记录器当前使用 StreamHandler 输出到控制台。

通过添加 FileHandler ,您可以登录到文件。

每个处理程序实例都可以定制为具有自己的格式和日志记录级别。

如果您想使用相同的格式记录,您还必须在新的 FileHandler 上设置格式。

 fh = logging.FileHandler(r'/path/to/log.txt')
fh.setFormatter(formatter)
logger.addHandler(fh)

阅读更多: Python 日志记录手册

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

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