python logging设置_python logging模块配置方法浅析

以下功能函数配置logging模块。它们位于logging.config模块中。它们的使用是可选的 - 可以使用这些功能函数配置logging模块;或者通过调用主API(logging中定义)并且定义在logging或logging.handlers中定义的handlers。

logging.config.dictConfig(config):

从字典获取logging配置。

logging.config.fileConfig(fname, defaults=None, disable_existing_loggers=True):

从一个configparser格式命名为fname的文件中读取logging配置。

配置字典:

传递给dictConfig()的字典必须包含以下关键字:version:被设置为表示模式版本的整数值,目前唯一有效值为1

formatters:值是字典类型,其中每个key是一个formatter id,每一个value是一个字典并描述如何配置相应的Formatter实例

filters:值是字典类型,其中每个key是一个过滤器,每一个value是一个字典并描述如何配置相应的Filter实例

handlers:值是字典类型,每个key是一个handler id,每个value是一个描述如何配置相应Handler实例的字典

handlers配置字典搜寻以下key:

class(强制):handler类的完整描述名

level(可选):handler等级

formatter(可选):用于该handler的formatter id

filters(可选):用于该handler的filter id的列表

loggers:值是字典类型,其中每个key是一个logger名,每个value是一个描述配置相应Logger实例的字典

root:root logger的配置。配置的处理将和任何logger一样,除了propagate不适用

incremental:是否配置被解释为已存在配置的增量。默认False

disable_existing_loggers:是否任何已存在的logger都被禁止。默认True,如果incremental为True,该值被忽略

看一个实际的logging配置文件:version: 1

formatters:

simple:

format: '%(asctime)s - %(name)s - %(levelname)s - %(message)s'

handlers:

console:

class: logging.StreamHandler

level: DEBUG

formatter: simple

stream: ext://sys.stdout

info_file_handler:

class: logging.handlers.RotatingFileHandler

level: INFO

formatter: simple

filename: info.log

maxBytes: 10485760

backupCount: 3

encoding: utf8

error_file_handler:

class: logging.handlers.RotatingFileHandler

level: ERROR

formatter: simple

filename: error.log

maxBytes: 10485760

backupCount: 3

encoding: utf8

loggers:

simpleExample:

level: DEBUG

handlers: [console]

propagate: no

root:

level: DEBUG

handlers: [console, info_file_handler, error_file_handler]

定义了一个名称为'simple'的formatter

定义了三个handler:'console', 'info_file_handler', 'error_file_handler'

定义了一个logger:'simpleExample'

定义了一个root

默认logger使用root的配置,例如常用的logging.getLoggeer(__name__),由于__name__对应的logger没有在配置文件中定义,因此创建默认root的配置的logger实例,其包括三个handler:console,info_file_handler,error_file_handler,相应的日志也会输出到三个handler定义的目的地。如果调用logging.getLoggeer('simpleExample'),则创建配置文件中匹配的名称为'simpleExample'的logger实例,其handler为console,即在console输出日志。

logging.handlers.RotatingFileHandler可以实现日志文件自动循环覆盖的功能,如果需要实现日志文件变更后(例如被删除)自动生成,则需要使用logging.handlers.WatchedFileHandler,目前看没有找到同时具备上述两个功能的handler。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值