python logging日志的应用

@python logging日志的应用

python 实现日志的收集

  1. logging模块 实现日志收集
    1.ogging模块与Print区别:可以实现不同级别日志的输出
  2. logging模块的应用 内置模块
    1.Logger 日志器 提供一个入口,供所有的应用程序接口使用
    2.Handler 处理器 决定日志输出的位置
    3.Formator 格式器 决定日志显示的内容
    4.Filter过滤器 筛选感兴趣的内容
    关系:一个Logger日志器可以有多个处理器,每个处理器都有各自的格式器和过滤器
  3. 代码如何实现
    1.考虑日志级别
    五大级别:从低到高
    1、debug 调试信息
    2、info 关键时间描述
    3、warning 警告
    4、error 错误
    5、critical 严重

实现日志的输出

import logging
 #创建一个日志器
 logger=logging.getLogger(‘日志名称')
 #设置日志的输出最低级别 默认输出最低级别是warning
 logger.setLevel(logging.INFO)
 创建一个处理器handler 控制台进行日志输出
 console=logging.StreamHandler()
 #创建一个文件处理器
 console1 = logging.FileHandler(filename=f'{time.strftime("%Y-%m-%d-%H-%M-%S",time.localtime())}_log',encoding="utf‐8")
 #创建一个格式器(包含数据(时间 +文件名+错误信息+错误等级),并制定格式)
 format_handler=logging.Formatter(fmt='%(asctime)s %(levelname)s - %(name)s - %(filename)s (%(lineno)d): %(message)s'
 #添加处理器
logger.addHandler(console)
logger.addHandler(console1)
#设置处理器格式
console.setFormatter(format_handler)
console1.setFormatter(format_handler)
#定义一个过滤器-过滤日志名为abc的日志,即名字不为abc的 不打印日志
flt = logging.Filter('abc')  
#文件处理器添加过滤器
console.addFilter(flt)
console1.addFilter(flt)
#打印日志
logger.error("这是一个错误信息")
logger.warning("这是一个warning信息")
logger.info("这是一个info信息")
logger.critical("这是一个critical信息")
logger.debug("这是一个debug信息")

实现日志的封装

import time
def getlog():
#创建一个日志器
    logger=logging.getLogger('logger')
   #设置日志的输出最低级别 默认输出最低级别是warning
    logger.setLevel(logging.INFO)
    #如果没有处理器才会添加处理器,这样避免重复调用处理器
    if not logger.handlers:
        #创建一个处理器handler 文件进行日志输出
	  	sh=logging.StreamHandler()
	    fh=logging.FileHandler(filename=f'{time.strftime("%Y_%m_%d_%H_%M_%S",time.localtime())}_log',encoding="utf-8")
	    #创建一个格式器(包含数据(时间 +文件名+错误信息+错误等级),并制定格式)
	    formater=logging.Formatter(fmt='%(asctime)s %(levelname)s - %(name)s - %(filename)s (%(lineno)d): %(message)s'
	                                       ,datefmt='%Y-%m-%d %H:%M:%S')
	    logger.addHandler(fh)
	    logger.addHandler(sh)
	    console.setFormatter(formater)
	    console1.setFormatter(formater)
	    #定义一个过滤器-过滤日志名为abc的日志,即名字不为abc的 不打印日志
		flt = logging.Filter('abc')  
		#文件处理器添加过滤器
		console.addFilter(flt)
		console1.addFilter(flt)
	return logger

getlog().info("这是错误1")
getlog().error("这是错误2")

通过配置文件的方式来处理日志

新建一个配置文件 logging.conf
配置文件内容如下:

[loggers]
keys=root,applog

[handlers]
keys=fileHandler,consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler

[logger_applog]
level=DEBUG
handlers=fileHandler,consoleHandler
qualname=applog
propagate=0

[handler_consoleHandler]
class=StreamHandler
args=(sys.stdout,)
level=DEBUG
formatter=simpleFormatter

[handler_fileHandler]
class=handlers.TimedRotatingFileHandler
args=('applog.log', 'midnight',1,0)
level=DEBUG
formatter=simpleFormatter

[formatter_simpleFormatter]
format=%(asctime)s|%(levelname)8s|%(name)s|%(filename)s[:%(lineno)d]|%(message)s
datefmt=%Y-%m-%d %H:%M:%S

使用配置文件处理日志的代码如下:

import logging
import logging.config
#加载配置文件
logging.config.fileConfig('logging.conf')
#定义一个日志对象名为root的日志处理器
rootLogger = logging.getLogger()
rootLogger.debug("This is root Logger, debug")

#定义一个日志对象名为applog的日志处理器
logger = logging.getLogger('applog')
logger.debug("This is applog, debug")

a = 'abc'
try:
    int(a)
except Exception as e:
    # logger.error(e)
    #打印完整的报错信息
    logger.exception(e)

欢迎各学友点赞、收藏、加关注,本人将持续更新python相关内容。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值