[英]How to log to file & stdout
我设置了以下日志记录:
import logging
logging.basicConfig(level=logging.DEBUG,
format='[%(asctime)s] - %(funcName)s - %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='/tmp/affiliate.log',
filemode='w')
我将如何转换以下两个语句-写入日志文件,然后输出输出:
logging.debug('>>>>> 401 Error: Cannot download file')
print '>>>>> 401 Error: Cannot download file'
合并成一个日志记录,两者兼而有之?
您不能basicConfig
做到这basicConfig
(至少不是在Python 2.7中; 3.3添加了新功能,尤其是handlers
参数),但是将记录器设置为写入两个位置很容易。 日志记录手册详细介绍了如何进行各种操作。
尚没有完全解释其中的一些菜谱条目,只是进行了演示,但您始终可以在logging
文档中查找详细信息。
您在这里寻找的关键是创建两个处理程序— FileHandler('/tmp/affiliate.log')
和StreamHandler(sys.stdout)
。
如果要在日志文件和stdout
使用相同的格式,日志级别等,则本食谱的早期示例之一就是这样做的,除了stderr
。 如果每种格式都需要不同的格式, 那么下一个示例将这样做 。
因此,代替此:
logging.basicConfig(level=logging.DEBUG,
format='[%(asctime)s] - %(funcName)s - %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='/tmp/affiliate.log',
filemode='w')
做这个:
logger = logging.getLogger('')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler('/tmp/affiliate.log')
sh = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter('[%(asctime)s] - %(funcName)s - %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S')
fh.setFormatter(formatter)
sh.setFormatter(formatter)
logger.addHandler(fh)
logger.addHandler(sh)
请注意,我链接的第二个示例使用basicConfig
可以做的一切,然后在其上面添加第二个处理程序。 我认为这还不太清楚,但是如果您要这样做,也可以做到。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.