使用 logging.config.dictConfig(dicFile) 中的“过滤器”根据其级别区分日志记录

时间:2021-05-01 20:14:55

标签: python python-logging

APP Flask 正在记录活动并显示在终端中,相同的记录也存储在一个文件中。 APP 大小增加,日志也增加。应用程序中的 dicFile 加载:

log_file_path = path.join(path.dirname(path.abspath(__file__)), 'log02.json')
with open(log_file_path, 'rt') as f:
    dicFile = json.load(f)
    logging.config.dictConfig(dicFile)

dicFile log02.json 处理程序填充 3 个文件(file、file2、file3); file 拥有所有记录,对于 file2file3 需要的是解析并在其各自的日志中仅记录 WARNINGINFO 记录,但是它们正在接收警告/信息及以上根据其级别。 我理解是因为关卡默认配置。

它如何过滤和/或解析只需要级别的分离日志?配置的dicFile是:

    "version": 1,
    "disable_existing_loggers": false,
    "filters":{
        "warning": {
            "level": "WARNING"
        },
        "info": {
            "level": "INFO"
        }
    },
    "formatters": {
        "standard": { 
            "format": "%(levelname)s :: %(asctime)s ::  %(name)s.%(funcName)s:%(lineno)d :: %(message)s",
            "datefmt": "%d/%m/%y %H:%M:%S"
        }
    },
    "handlers": {
        "": { 
            "level": "DEBUG",
            "formatter": "standard",
            "class": "logging.StreamHandler",
            "stream": "ext://sys.stdout"
        },
        "file": { 
            "level": "DEBUG",
            "formatter": "standard",
            "class": "logging.FileHandler",
            "filename": "simple_APP/flaskblog/logs/todo.log",
            "encoding": "utf-8"
        },
        "file2": {
            "class": "logging.FileHandler",
            "level": "WARNING",
            "formatter": "standard",
            "filters": ["warning"],
            "filename": "simple_APP/flaskblog/logs/warning.log",
            "encoding": "utf-8"     
        },
        "file3": {
            "class": "logging.FileHandler",
            "level": "INFO",
            "formatter": "standard",
            "filters": ["info"],
            "filename": "simple_APP/flaskblog/logs/info.log",
            "encoding": "utf-8"
        }
    },
    "loggers": {
        "": { 
            "handlers": ["file", "file2", "file3"],
            "level": "DEBUG",
            "propagate": false
        }
    }
}

0 个答案:

没有答案
相关问题