python中的logging模块

一、python中的logging模块提供了日志的接口,过它存储各种格式的日志

日志的等级分为以下几种,日志的等级按照以下顺序依次提高,DEBUG < INFO < WARNING < ERROR < CRITICAL;但是日志的信息量是依次减少的,当指定一个日志级别之后,会记录大于或等于这个日志级别的日志信息,小于的将会被丢弃。

二、logging模块提供了两种记录日志的方式:

第一种方式是使用logging提供的模块级别的函数
第二种方式是使用Logging日志系统的四大组件
函数 说明

import logging
logging.debug("a")
logging.info("b")
logging.warning('c')
logging.error('d')
logging.critical('e')

在这里插入图片描述
只有后面三个打印出来了,因为默认级别是logging.warning,低于该级别的就不输出了
Logging.basicConfig()需要在开头就设置,在中间设置没有作用
通过logging.basicConfig可以设置root的日志级别,和日志输出格式

import logging
import time
import os
 
class mylog(object):
    def __init__(self,logger_name):
 
        #创建一个logger
        self.logger= logging.getLogger(logger_name)
        self.logger.setLevel(logging.INFO)
 
 
        #设置日志存放路径,日志文件名
    #获取本地时间,转换为设置的格式
        rq = time.strftime('%Y%m%d%H%M',time.localtime(time.time()))
        #设置所有日志和错误日志的存放路径
        all_log_path = os.path.join(os.path.dirname(os.getcwd()),'Logs/All_Logs/')
        error_log_path = os.path.join(os.path.dirname(os.getcwd()),'Logs/Error_Logs/')
        #设置日志文件名
        all_log_name = all_log_path + rq +'.log'
        error_log_name = error_log_path + rq +'.log'
 
        #创建handler
        #创建一个handler写入所有日志
        fh = logging.FileHandler(all_log_name)
        fh.setLevel(logging.INFO)
        #创建一个handler写入错误日志
        eh = logging.FileHandler(error_log_name)
        eh.setLevel(logging.ERROR)
        #创建一个handler输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.INFO)
 
        #定义日志输出格式
        #以时间-日志器名称-日志级别-日志内容的形式展示
        all_log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
        #以时间-日志器名称-日志级别-文件名-函数行号-错误内容
        error_log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(module)s  - %(lineno)s - %(message)s')
        #将定义好的输出形式添加到handler
        fh.setFormatter(all_log_formatter)
        ch.setFormatter(all_log_formatter)
        eh.setFormatter(error_log_formatter)
 
 
        #给logger添加handler
        self.logger.addHandler(fh)
        self.logger.addHandler(eh)
        self.logger.addHandler(ch)
 
    def getlog(self):
        return self.logger

测试代码:

from Common import logger
logger = logger.mylog('test').getlog()
try:
    logger.info('开始测试...')
    r = 10/0
    logger.info('result:',r)
except ZeroDivisionError as e:
    logger.error('tests',exc_info=1)

使用exc_info=1可以把报错信息完整的打印进日志

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值