python内置日志模块(logging)使用方法

一、初识logging模块

#!/usr/bin/env python
#-*- coding:utf-8 -*-
 
import logging                          #导入logging内置模块
logging.debug("这是debug等级的message")          #告警级别最低,输出详细的运行情况,主要用于调试。
logging.info("这是info等级的message") #告警级别比debug要高,确认一切按预期运行,一般用于输出重要运行情况。 logging.warning("这是warning等级的message") #告警级别比info要高,该模式是默认的告警级别!预示着一些意想不到的事情发生,或在不久的将来出现一些问题(例如“磁盘空间不足”)。该软件仍在正常工作。 logging.error("这是error等级的message") #告警级别要比warning要高,由于一个更严重的问题,该软件还不能执行某些功能。 logging.critical("这是critical等级的message") #告警级别要比error还要高,严重错误,表明程序本身可能无法继续运行。

#显示默认告警级别warning以上级别的信息,代码执行结果如下(loggin中默认的日志收集器为root,收集等级为Warning):
WARNING:root:这是warning等级的message
ERROR:root:这是error等级的message
CRITICAL:root:这是critical等级的message

二、日志收集器

#创建自己的日志收集器对象logging.getLogger
my_logging = logging.getLogger('my_logging')
#设置收集的日志等级,设置debug等级以上的日志
my_logging.setLevel('DEBUG')
#调用
my_logging.debug("这是debug等级的message")

三、日志输出渠道

#有两种输出方式:1.输出到控制台 2.输出到文件
#输出到控制台,创建一个日志输出渠道:
l_s = logging.StreamHandler()
l_s.setLevel('DEBUG') #设置收集日志等级,设置debug等级以上的日志
my_logging.addHandler(l_s) #将输出渠道添加到日志收集器中

#输出到文件,可输出多个文件,创建一个日志输出渠道:
l_f = logging.FileHandler('logging.log',encoding='utf8') #第一个文件
l_f.setLevel('DEBUG') #设置收集日志等级,设置debug等级以上的日志
l_f2 = logging.FileHandler('logging2.log',encoding='utf8') #第二个文件
l_f2.setLevel('WARNING') #设置收集日志等级,设置warning等级以上的日志
my_logging.addHandler(l_f) #将输出渠道添加到日志收集器中
my_logging.addHandler(l_f2)

四、日志输出格式

可以通过logging.Formatter指定日志的输出格式,这个参数可以输出很多有用的信息,如下:

%(name)s   #收集器名称
%(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 #打印日志信息

在工作中建议使用格式如下:

#打印日志的时间 - 打印当前执行程序名-->打印日志的当前行号 - 打印日志级别名称:打印日志信息
'%(asctime)s - [%(filename)s -->line:%(lineno)d] - %(levelname)s: %(message)s'

#定义handler的log信息输出格式
formatter = logging.Formatter('%(asctime)s - [%(filename)s-->line:%(lineno)d] - %(levelname)s: %(message)s')
#设置handler的log信息输出格式
l_s.setFormatter(formatter)
l_f.setFormatter(formatter)
l_f2.setFormatter(formatter)


推荐博客:https://www.cnblogs.com/yinzhengjie/p/8526226.html

推荐理由:看上去高大上,案例较多!

转载于:https://www.cnblogs.com/yangyangyangyangzi/p/10949863.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值