我是相当新的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')
您只需要添加另一个处理程序,如日志记录。FileHandler
fh = logging.FileHandler(r'/path/to/log.txt')
logger.addHandler(fh)
扩展@Brendan的答案。
记录器当前使用StreamHandler
输出到控制台。
通过添加文件处理程序
,您可以登录到文件。
可以自定义每个处理程序实例,使其具有自己的格式和日志记录级别。
如果您想使用相同的格式登录,您也必须在新的FileHandler上设置该格式。
fh = logging.FileHandler(r'/path/to/log.txt')
fh.setFormatter(formatter)
logger.addHandler(fh)
阅读更多:Python日志食谱
在多次使用Waterboy的代码在多个Python包中同时记录到控制台和文件(参见此线程)之后,我最终将其转换为一个小型的独立Python包,您可以在这里找到:
https://github.com/acschaefer/duallog
代码有很好的文档记录,并且易于使用。只需下载。py
文件并将其包含在项目中,或者通过python安装程序安装整个软件包。py安装。
使用此软件包,您的代码如下所示:
# Set up logging to console and file.
import duallog
duallog.setup(logdir='my_logs')
# Generate log messages.
import logging
logging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error message')
logging.critical('critical message')