当前位置: 首页 > news >正文

申请注册网站站长工具亚洲

申请注册网站,站长工具亚洲,网站开发平面设计师岗位要求,发号网站源码目录 logging模块 logging核心组件 logger handler StreamHandler:把日志内容在控制台中输出 FileHandler:把日志内容写入到文件中 filter formatter 注意日志级别的继承问题 logger.exception 上述样例的整体代码 日志的配置文件及其模板 lo…

目录

logging模块

logging核心组件

logger

handler

                StreamHandler:把日志内容在控制台中输出

                FileHandler:把日志内容写入到文件中

filter

formatter

注意日志级别的继承问题

logger.exception

上述样例的整体代码  

 日志的配置文件及其模板


logging模块

        logging是Python的内置日志模块,用于生成程序日志。l

        logging有五个日志级别,从低到高进行排序:DEBUG、INFO、WARMING、ERROR、CRITICAL。日志内容的记录只会记录当前设定等级及其以上的等级,例如级别为WARMING,日志的内容就只会记录WARMING、ERROR、CRITICAL,这三个级别的内容

        logger默认的级别是warming

logging核心组件

        logger(记录器):可以实例化多个记录器用于记录不同的日志要求

        handler(处理器):可以定义多个处理器处理不同的日志保存或发送要求

        filter(过滤器):可以对记录器的选择进行筛选

        formatter(格式器):可以对日志的内容进行格式化要求

logger

        logging.getLogger()

                定义多个logger,通过不同的名字的来创建不同的looger

        loggin.setLevel()

                定义记录器的日志级别

first_logger = logging.getLogger(name='FirstLogger')
second_logger = logging.getLogger(name='SecondLogger')
second_logger.setLevel(logging.DEBUG)
print(f'first_logger:{first_logger}')
print(f'second_logger:{second_logger}')

handler

        两个经常使用的handler

                StreamHandler:把日志内容在控制台中输出

                参数为None,也可选:

                sys.stderr、 sys.stdout

                stdout,stderr的中文名字分别是标准输入,标准输出和标准错误

stream_handler = logging.StreamHandler(stream=None)formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
first_logger.addHandler(stream_handler)
stream_handler.setFormatter(formatter)
first_logger.warning('warning text',)

                FileHandler:把日志内容写入到文件中

                3个主要参数,filename、mode、encoding、分别是文件名、写入模式、编码格式,大致跟一般的写入文件一致

file_handler = logging.FileHandler(filename='file_log',mode='a',encoding='utf-8')formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
first_logger.addHandler(file_handler)
file_handler.setFormatter(formatter)
first_logger.warning('warning text',)

filter

        logging.Filter()

        可以过滤使用不同的记录器,可以设置记录器的名字是否与过滤条件一致

        例如

        second_logger记录器的名字为【SecondLogger】, third_logger记录器的名字为【aabb.ccthird_logger】,而过滤器的格式为【aabb.cc'】        

        两个过滤器都是使用StreamHandler但是最终只有third_logger的日志内容被打印,因为只有third_logger的名字满足过滤器的条件

third_logger = logging.getLogger('aabb.ccthird_logger')
third_logger.warning('123')flt = logging.Filter('aabb.cc')
third_logger.addFilter(flt)
second_logger.addHandler(stream_handler)
second_logger.addFilter(flt)
second_logger.error('error text')

formatter

        logging.Formatter()

        可以设置不同日志内容格式,根据自身所需进行格式的规定

        主要参数介绍

        %(asctime)s:打印日志的时间

        %(levelname)s:打印日志级别的名称

        %(message)s:打印日志信息

        %(filename)s:打印当前执行程序名

        %(processName)s:打印线程名称

        datefmt:指定时间的输出格式

formatter = logging.Formatter('======%(asctime)s - %(levelname)s - %(filename)s - %(message)s======',datefmt='%Y-%m-%d %H:%M')

注意日志级别的继承问题

没有指定日志级别,默认是WARMING

logger和handler都可以指定日志级别,最终已handler的为主,但是这里有一个点需要特别注意,

可能在指定日志级别会出现的问题,明明handler定义了DEBUG级别,可是输出时没有内容,这是因为如果logger没有指定级别,他会默认继承WARMING的最小级别,低于此级别的不会记录,所以要想设置handler的级别,建议最好先指定logger级别为DEBUG,再指定handler的级别

first_logger = logging.getLogger(name='FirstLogger')
# 没有设置logger的日志级别
# stream_handler.setLevel(logging.INFO)stream_handler = logging.StreamHandler(stream=sys.stdout)
stream_handler.setLevel(logging.DEBUG)
first_logger.debug('debug output')# 结果没有任何输出

         设置完logger的日志级别后,才能输出对应的信息

 

logger.exception

        如果只是使用logger.info等方式,不会记录过多的异常信息,但是使用logger.exception能够将详细的异常信息写入日志中去,其能将错误的类型,出错的位置进行记录,有助于项目调试

try:a = 3 / 0
except Exception as e:first_logger.exception(e)

 

上述样例的整体代码  

import logging
import sysfirst_logger = logging.getLogger(name='FirstLogger')
second_logger = logging.getLogger(name='SecondLogger')
second_logger.setLevel(logging.DEBUG)
# print(f'first_logger:{first_logger}')
# print(f'second_logger:{second_logger}')stream_handler = logging.StreamHandler(stream=sys.stdout)
file_handler = logging.FileHandler(filename='file_log',mode='a',encoding='utf-8')formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
first_logger.addHandler(stream_handler)
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
first_logger.warning('warning text',)third_logger = logging.getLogger('aabb.ccthird_logger')
third_logger.warning('123')flt = logging.Filter('aabb.cc')
third_logger.addFilter(flt)
second_logger.addHandler(stream_handler)
second_logger.addFilter(flt)
second_logger.error('error text')try:a = 3 / 0
except Exception as e:first_logger.exception(e)

 日志的配置文件及其模板

        可以参考我另外一篇博客,那里有详细介绍

        Python logging 日志配置文件模板_gongzairen的博客-CSDN博客

http://www.hkea.cn/news/896036/

相关文章:

  • 溧阳手机网站哪里做万网域名注册官网查询
  • 网站维护收费推广产品吸引人的句子
  • 怎么用一个主机做多个网站许昌网络推广公司
  • 网站域名所有权郑州网站运营专业乐云seo
  • 桂园精品网站建设费用网站seo查询站长之家
  • 安卓手机怎么做网站站长工具seo综合查询广告
  • 余姚网站建设的公司手机百度账号申请注册
  • 预付网站制作费怎么做凭证如何自制网站
  • 定制网站多少钱北京seo网站管理
  • 南昌做网站公司哪家好如何建立独立网站
  • 成都解放号网站建设什么是百度竞价
  • 网站优化的基本思想与原则百度号码
  • 沧州网站建设制作设计优化深圳seo优化推广
  • 建立一个网站需要什么技术网上培训机构
  • 网站设计与管理论文百度账号注册平台
  • 网站空间商推荐seo是什么职位缩写
  • 怎么建设boss网站文件外链
  • 百度推广网站建设费百度搜索引擎的网址是多少
  • php 手机网站 上传图片定制网站建设
  • 关于网站建设的问题百度关键词分析
  • 登录官方网站装修公司网络推广方案
  • 设计网站官网入口网站搜索优化方法
  • 网站优化qq群山东做网站
  • wordpress icomoon太原seo快速排名
  • 中华建设杂志网站记者数据指数
  • 网站开发测试情况南召seo快速排名价格
  • 上海仓储公司小红书seo优化
  • 南京建设公司网站网络营销整合推广
  • wordpress更改语言沈阳seo优化
  • wordpress免费网站世界大学排名