我在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')
答案 0 :(得分:17)
您只需要添加另一个处理程序,例如logging.FileHandler
fh = logging.FileHandler(r'/path/to/log.txt')
logger.addHandler(fh)
答案 1 :(得分:9)
扩大@Brndanan的答案。
您的记录器当前使用StreamHandler
输出到控制台。
通过添加FileHandler
,您可以登录文件。
可以自定义每个处理程序实例,使其具有自己的格式和日志记录级别。
如果您想使用相同的格式进行日志记录,则还必须在新的FileHandler上设置格式。
fh = logging.FileHandler(r'/path/to/log.txt')
fh.setFormatter(formatter)
logger.addHandler(fh)
答案 2 :(得分:0)
在使用Waterboy的代码在多个Python包中一遍又一遍地同步记录到控制台和文件(请参阅this thread)之后,我最终将其转换为一个很小的独立Python包,您可以在这里找到它: / p>
https://github.com/acschaefer/duallog
该代码有据可查且易于使用。只需下载.py
文件并将其包含在您的项目中,或通过python setup.py install
安装整个软件包。
使用此软件包,您的代码应如下所示:
# 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')