python logging通过json文件配置

python logging通过json文件配置
logconfig.json
log_utility.py
调用
logconfig.json
{
    "version":1,
    "disable_existing_loggers":false,
    "formatters":{
        "simple":{
            "format":"[%(asctime)s - %(levelname)s  - line(%(lineno)d) - %(filename)s]: %(message)s",
            "datefmt":"%Y-%m-%d %H:%M:%S"
        }
    },
    "handlers":{
        "console":{
            "class":"logging.StreamHandler",
            "level":"DEBUG",
            "formatter":"simple",
            "stream":"ext://sys.stdout"
        },
        "info_file_handler":{
            "class":"logging.handlers.TimedRotatingFileHandler",
            "level":"INFO",
            "formatter":"simple",
            "filename":"../log/info.log",
            "when":"H",
            "interval":1,
            "backupCount":50,
            "encoding":"utf8"
        },
        "error_file_handler":{
            "class":"logging.handlers.TimedRotatingFileHandler",
            "level":"ERROR",
            "formatter":"simple",
            "filename":"../log/errors.log",
            "when":"H",
            "interval":1,
            "backupCount":50,
            "encoding":"utf8"
        }
    },
    "loggers":{
        "my_module":{
            "level":"ERROR",
            "handlers":["info_file_handler"],
            "propagate":"no"
        }
    },
    "root":{
        "level":"INFO",
        "handlers":["console","info_file_handler","error_file_handler"]
    }
}
 
log_utility.py
import os
import json
import logging
import logging.config


def setup_logging(default_path="logconfig.json",default_level=logging.DEBUG):
    path = default_path
    if os.path.exists(path):
        with open(path,"r") as f:
            config = json.load(f)
            logging.config.dictConfig(config)
    else:
        logging.basicConfig(level=default_level)
 
调用
config_path = sys.path[0] + '/logconfig.json'
log_utility.setup_logging(config_path)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Pythonlogging 模块可以通过配置文件来设置日志的输出格式、级别、输出位置等信息。其中,JSON 格式的配置文件可以更加灵活地配置日志信息。 以下是一个简单的 JSON 配置文件示例: ```json { "version": 1, "disable_existing_loggers": false, "formatters": { "simple": { "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s" } }, "handlers": { "console": { "class": "logging.StreamHandler", "level": "DEBUG", "formatter": "simple", "stream": "ext://sys.stdout" }, "file": { "class": "logging.handlers.RotatingFileHandler", "level": "DEBUG", "formatter": "simple", "filename": "example.log", "maxBytes": 10485760, "backupCount": 5, "encoding": "utf8" } }, "loggers": { "example": { "level": "DEBUG", "handlers": ["console", "file"], "propagate": "no" } } } ``` 该配置文件中包含了以下几个部分: - `"version"`:配置文件的版本号,目前只有 1 个版本; - `"disable_existing_loggers"`:是否禁用已经存在的 logger。如果设置为 `true`,则会禁用默认的 root logger; - `"formatters"`:日志格式; - `"handlers"`:日志输出位置; - `"loggers"`:具体的 logger 配置。 在上面的配置文件中,定义了一个名为 `"example"` 的 logger,它的日志级别为 `DEBUG`,并且输出到控制台和文件中。同时,还定义了一个 `"simple"` 格式,它包含了日志的时间、logger 名称、日志级别和日志信息。 要使用 JSON 格式的配置文件,可以使用 `fileConfig` 函数来加载配置: ```python import logging.config logging.config.fileConfig('logging.json') logger = logging.getLogger('example') logger.debug('This is a debug message') logger.info('This is an info message') logger.warning('This is a warning message') logger.error('This is an error message') logger.critical('This is a critical message') ``` 在上面的代码中,使用 `fileConfig` 函数加载名为 `logging.json` 的配置文件,并使用 `getLogger` 函数获取名为 `"example"` 的 logger,通过 logger 输出日志信息。 需要注意,使用 JSON 配置文件时,需要将配置文件中的每个部分都填写完整,否则会出现解析错误。此外,也可以使用其他格式的配置文件,例如 INI 格式的配置文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值