Python 日志记录在 ini 文件中为处理程序添加过滤器?

2024-04-22

我有一个像这样的 log.ini:

[handler_info]
class=StreamHandler
level=INFO
formatter=fmt
filter=infofilter
args=(sys.stdout,)

[handler_error]
class=StreamHandler
level=ERROR
filter=errorfilter
formatter=fmt
args=(sys.stdout,)

[filter_infofilter]
class=util.testfm.InfoFilter

[filter_errorfilter]
class=util.testfm.ErrorFilter

但这不起作用。我不想为处理程序动态添加过滤器,例如handler.addFilter(logging.Filter('foo'))

我的过滤器是这样的:

class InfoFilter(logging.Filter):

    def filter(self, rec):
        return rec.levelno <= logging.INFO


class ErrorFilter(logging.Filter):

    def filter(self, rec):
        return rec.levelno > logging.INFO

我想实现什么目标?我想使用一个记录器和两个不同的处理程序将不同级别的日志写入不同的文件。

我还发现“如果您需要在日志配置中包含 Filter 实例,则需要使用 dictConfig() ”https://docs.python.org/2/library/logging.config.html https://docs.python.org/2/library/logging.config.html.


看来我只能做这样的事情:

class InfoHandler(StreamHandler):
    def __init__(self, *args, **kwargs):
        StreamHandler.__init__(self, *args, **kwargs)
        self.addFilter(InfoFilter())


class ErrorHandler(StreamHandler):
    def __init__(self, *args, **kwargs):
        StreamHandler.__init__(self, *args, **kwargs)
        self.addFilter(ErrorFilter())

添加 make ini 像:

[handler_error]
class=misc.testfm.ErrorHandler
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 日志记录在 ini 文件中为处理程序添加过滤器? 的相关文章

随机推荐