gpt4 book ai didi

Python:记录到多个日志文件

转载 作者:行者123 更新时间:2023-11-28 22:56:42 27 4
gpt4 key购买 nike

目前我已将所有内容记录到一个日志文件中,但我想将其分离到多个日志文件中。我查看了 python 文档中的日志记录,但他们没有讨论这个问题。

log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
logging.basicConfig(filename=(os.path.join(OUT_DIR, + '-user.log')),
format=log_format, level=logging.INFO, datefmt='%Y-%m-%d %H:%M:%S')

目前这就是我进行日志记录的方式。我想做的是将不同类型的错误或信息记录到不同的日志文件中。在我执行 logging.info('Logging IN')logging.error('unable to login') 时,将转到同一个日志文件。我想把它们分开。我是否需要创建另一个日志对象来支持登录到另一个文件?

最佳答案

你/可以/做的(我没有深入研究 logging 模块,所以可能有更好的方法来做到这一点)可能是使用流而不是文件对象:

In [1]: class LogHandler(object):
...: def write(self, msg):
...: print 'a :%s' % msg
...: print 'b :%s' % msg
...:

In [3]: import logging
In [4]: logging.basicConfig(stream=LogHandler())
In [5]: logging.critical('foo')
a :CRITICAL:root:foo
b :CRITICAL:root:foo

In [6]: logging.warn('bar')
a :WARNING:root:bar
b :WARNING:root:bar

进一步处理编辑:

假设您的日志文件已经存在,您可以这样做:

import logging

class LogHandler(object):
format = '%(levelname)s %(message)s'
files = {
'ERROR': 'error.log',
'CRITICAL': 'error.log',
'WARN': 'warn.log',
}
def write(self, msg):
type_ = msg[:msg.index(' ')]
with open(self.files.get(type_, 'log.log'), 'r+') as f:
f.write(msg)

logging.basicConfig(format=LogHandler.format, stream=LogHandler())
logging.critical('foo')

这将允许您根据日志消息中的条件将日志记录分成多个文件。如果找不到您要查找的内容,它会默认为 log.log

关于Python:记录到多个日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15147713/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com