python logging

本文详细解读了如何使用Python的logging模块通过fileConfig配置文件来控制日志输出,涉及logger、handler、formatter的配置及常见格式说明。通过实例演示了不同级别的日志记录和不同logger的选择。
摘要由CSDN通过智能技术生成

python 使用fileconfig配置logging,控制logging的输出。配置文件1如下:

[loggers]
# 配置logger信息。
# 必须包含一个名字叫做root的logger,当使用无参函数logging.getLogger()时,默认返回root这个logger;
# 其他自定义logger可以通过 logging.getLogger("{name}") 方式进行调用
keys=root,file,error
[handlers]
# 定义声明handlers信息。
keys=fileHandler,consoleHandler,errorHandler
[formatters]
# 设置日志格式
keys=simpleFormatter

[logger_root]
# 对loggers中声明的logger进行逐个配置,且要一一对应;
# 在所有的logger中,必须制定level和handlers这两个选项,
# handlers可以指定多个,中间用逗号隔开,比如handlers=fileHandler,consoleHandler,同时制定使用控制台和文件输出日志
# 对于非root logger,还需要添加一些额外的option:
# 其中qualname表示它在logger层级中的名字,在应用代码中通过这个名字制定所使用的handler,即 logging.getLogger("file"),
level=DEBUG
handlers=consoleHandler,fileHandler,errorHandler

[logger_file]
level=DEBUG
handlers=fileHandler
qualname=file
propagate=0

[logger_error]
level=ERROR
handlers=errorHandler
qualname=error
propagate=0 

[handler_consoleHandler]
# 在handler中,必须指定class和args这两个option,
# 常用的class包括 StreamHandler(仅将日志输出到控制台)、FileHandler(将日志信息输出保存到文件)、RotaRotatingFileHandler(将日志输出保存到文件中,并设置单个日志wenj文件的大小和日志文件个数);;
# args表示传递给class所指定的handler类初始化方法参数,它必须是一个元组(tuple)的形式,即便只有一个参数值也需要是一个元组的形式;里面指定输出路径,比如输出的文件名称等。level与logger中的level一样,
# formatter指定的是该处理器所使用的格式器,这里指定的格式器名称必须出现在formatters这个section中,且在配置文件中必须要有这个formatter的section定义;如果不指定formatter则该handler将会以消息本身作为日志消息进行记录,而不添加额外的时间、日志器名称等信息;
level=DEBUG
class=StreamHandler
args=(sys.stdout,)
formatter=simpleFormatter

[handler_fileHandler]
class=FileHandler
args=('/data/log.log', 'a')
level=DEBUG
formatter=simpleFormatter

[handler_errorHandler]
class=FileHandler
args=('/data/log_error.log', 'a')
level=ERROR
formatter=simpleFormatter

[formatter_simpleFormatter]
format=%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s
#datefmt=%Y-%m-%d %H:%M:%S

其中,format常用格式说明2

%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息

测试程序:

mport logging.config

logging.config.fileConfig('logging.ini', disable_existing_loggers=False)
logger = logging.getLogger(__name__)

logger.info("info msg")
logger.debug("debug msg")
logger.warning('warning msg')
logger.error('error msg')
logger.critical('critical msg')

logger = logging.getLogger('error')

logger.info("error info msg")
logger.debug("error debug msg")
logger.warning('error warning msg')
logger.error('error error msg')
logger.critical('error critical msg')

logger = logging.getLogger('file')

logger.info("file info msg")
logger.debug("file debug msg")
logger.warning('file warning msg')
logger.error('file error msg')
logger.critical('file critical msg')

另外,linux服务器中默认时间区时是UTC,修改为上海的时间的修改方法参考 Ubuntu 区时修改


  1. Python通过logging.config.fileConfig()配置日志 ↩︎

  2. logging说明 ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值