1. 日志级别

级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUGlogging.critical()  -->输出CRITICAL级别日志
logging.error()     -->输入ERROR级别日志
logging.warning()     -->输入WARNING级别日志
logging.info()     -->输入INFO级别日志
logging.debug()     -->输入DEBUG级别日志
# 案例:在控制台分别输出各个级别的日志
import logginglogging.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默认日志器的名字
logging.error('error日志信息') #ERROR:root:error日志信息
logging.warning('warning日志信息')
logging.info('info日志信息')
logging.debug('debug日志信息')# print(a) #NameError: name 'a' is not defined# CRITICAL:root:critical
# root是默认日志器的名字;默认的日志器默认日志级别:warning   --筛选日志信息的显示# 总结:默认只输入Warning级别及以上级别的日志,如果需要查看到所有的日志,则需要改变默认日志级别# 改变默认日志器的日志级别

2. 设置日志格式

logging.basicConfig()函数可以设置日志级别,日志的格式以及日志的位置等。
# 案例:设置日志级别和日志格式,要求在控制台分别输出各个级别的日志,并将日志保存在本地文件
import logging# 默认日志器的设置操作
# 1-输出位置的设置
logging.basicConfig(filename = 'test2.log',filemode='a')
# 存在一个问题,如果日志信息中有中文,则会显示乱码
# 可以用stream来进行解决
file = open('test3.log','a',encoding='utf-8')
logging.basicConfig(stream = file)# 2-级别设置
#logging.basicConfig(level = logging.DEBUG)# 3-格式设置
logging.basicConfig(format = '%(asctime)s ** %(levelname)s ** %(message)s -->%(filename)s:%(lineno)d')logging.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默认日志器的名字
logging.error('error日志信息') #ERROR:root:error日志信息
logging.warning('warning日志信息')
logging.info('info日志信息')
logging.debug('debug日志信息')# 日志级别对应的数字
# critical:50
# error:40
# warning:30
# info:20
# debug:10

3. 日志组件

日志的四大组件:日志器、处理器、过滤器、格式器日志器:产生各级别日志的载体处理器:日志显示在哪个位置(控制台、本地的文件中)控制台处理器:将日志输出在控制台文件处理器:将日志输出在文件中过滤器:过滤/筛选日志格式器:设置日志显示的内容以及自定义格式

3.1 控制台处理器

日志器+控制台处理器
创建日志器 logger=logging.getLogger()日志器设置日志界别
创建控制台处理器 h=logging.StreamHandler()处理器设置日志界别
日志器添加处理器  logger.addHandler(h)
输出日志
# 案例:自定义日志器和处理器,并在控制台输出所有的级别的日志信息
import logging
# 创建日志器
log = logging.getLogger('kate')
# 创建控制台处理器
s_handler = logging.StreamHandler()
# 日志器添加处理器
log.addHandler(s_handler)
# 输出日志
log.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默认日志器的名字
log.error('error日志信息') #ERROR:root:error日志信息
log.warning('warning日志信息')
log.info('info日志信息')
log.debug('debug日志信息')

总结:自定义的日志器默认的日志级别也是warning,所以只能输出警告及以上级别的日志信息

# 如何输出所有级别的日志信息
# 1:日志器可以设置日志级别
# 2:处理器也可以设置日志级别
#
import logging
# 创建日志器
log = logging.getLogger('kate')
# 日志器设置日志级别
# log.setLevel(level = logging.DEBUG)# 创建控制台处理器
s_handler = logging.StreamHandler()
# 处理器设置日志级别
s_handler.setLevel(level = logging.DEBUG)# 总结:当日志器和处理器同时设置了日志级别时,谁设置的日志级别高就用谁的设置# 问题:当日志器没有设置级别,但是处理器设置为DEBUG级别之后,日志信息也只是显示warning及以上的日志信息?
# 日志器没有设置级别的时候,默认是warning ,warning>DEBUG,所以显示warning及以上的日志信息# 日志器添加处理器
log.addHandler(s_handler)
# 输出日志
log.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默认日志器的名字
log.error('error日志信息') #ERROR:root:error日志信息
log.warning('warning日志信息')
log.info('info日志信息')
总结:当日志器和处理器同时都设置了日志级别,则谁的级别高就以谁为准

3.2   日志器+文件处理器

创建日志器 logger=logging.getLogger()日志器设置日志级别:logger.setLevel(logging.DEBUG)
创建文件处理器 h=logging.FileHandler(filename, mode='a', encoding=None)文件处理器设置日志级别:h..setLevel(logging.INFO)
日志器添加处理器  logger.addHandler(h)
日志输出
# 案例:自定义日志器和文件处理器,并在文件中保存所有的级别的日志信息
import logging
# 创建日志器
log = logging.getLogger('kate')
# 创建文件处理器
s_handler = logging.FileHandler(filename='demo1.log',encoding='utf-8')
# 日志器添加处理器
log.addHandler(s_handler)
# 输出日志
log.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默认日志器的名字
log.error('error日志信息') #ERROR:root:error日志信息
log.warning('warning日志信息')
log.info('info日志信息')
log.debug('debug日志信息')
总结:自定义的日志器默认的日志级别也是警告,所以只能输出警告及以上级别的日志信息如何输出所有级别的日志信息1:日志器可以设置日志级别2:文件处理器也可以设置日志级别总结:当日志器和处理器同时都设置了日志级别,则谁的级别高就以谁为准

3.3 格式处理器

创建日志器:logger=logging.getLogger()日志器设置日志级别:logger.setLevel(logging.DEBUG)
创建处理器:s_hand=logging.StreamHandler()处理器设置日志级别:s_hand.setLevel(logging.INFO)
创建格式器:format1=logging.Formatter(fmt="%(levelname)s === %(message)s")
日志器添加处理器:logger.addHandler(h)
处理器添加格式器:s_hand.setFormatter(format1)
日志输出
#案例:自定义日志器、处理器和格式器,分别在控制台和文件中记录日志信息,并且给日志信息设置不同的格式
import logging
# 创建日志器
log = logging.getLogger('kate')# 创建控制台处理器
s_handler = logging.StreamHandler()# 创建一个文件处理器
f_handler = logging.FileHandler(filename = 'demo2.log',encoding='utf-8')# 日志器添加处理器
log.addHandler(s_handler)
log.addHandler(f_handler)# 创建一个格式器
f1 = logging.Formatter(fmt= '%(asctime)s**%(levelname)s**%(filename)s:''%(lineno)d:%(message)s==%(name)s')   # 日志器的名字:%(name)s
f2 = logging.Formatter(fmt= '%(asctime)s**%(levelname)s**%(message)s')
# 处理器设置格式器
s_handler.setFormatter(f2)  #控制台处理器日志添加了指定的格式f2
f_handler.setFormatter(f1)  # 文件处理器日志添加了指定的格式f1# 输出日志
log.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默认日志器的名字
log.error('error日志信息') #ERROR:root:error日志信息
log.warning('warning日志信息')
log.info('info日志信息')
log.debug('debug日志信息')
如何将日志记录在控制台和文件中,并且两个日志保存的级别和格式都不相同
1-日志器设置日志级别
2-控制器设置日志级别
需求:控制台输出error以上的日志,文件中保存debug以上的日志信息
控制台输出error以上的日志:日志设置日志级别:debug控制台处理器设置日志级别:error文件输出debug以上的日志:日志设置日志级别:debug文件处理器设置日志级别:debug
import logging
# 创建日志器
log = logging.getLogger('kate')
# 日志设置日志级别:DEBUG
log.setLevel(logging.DEBUG)# 创建控制台处理器
s_handler = logging.StreamHandler()
# 控制台处理器设置日志级别:error
s_handler.setLevel(logging.ERROR)# 创建一个文件处理器
f_handler = logging.FileHandler(filename = 'demo3.log',encoding='utf-8')
# 文件处理器设置日志级别:debug
f_handler.setLevel(logging.DEBUG)# 日志器添加处理器
log.addHandler(s_handler)
log.addHandler(f_handler)# 创建一个格式器
f1 = logging.Formatter(fmt= '%(asctime)s**%(levelname)s**%(filename)s:''%(lineno)d:%(message)s==%(name)s')   # 日志器的名字:%(name)s
f2 = logging.Formatter(fmt= '%(asctime)s**%(levelname)s**%(message)s')
# 处理器设置格式器
s_handler.setFormatter(f2)  #控制台处理器日志添加了指定的格式f2
f_handler.setFormatter(f1)  # 文件处理器日志添加了指定的格式f1# 输出日志
log.critical('critical日志信息') # CRITICAL:root:critical日志信息  root是默认日志器的名字
log.error('error日志信息') #ERROR:root:error日志信息
log.warning('warning日志信息')
log.info('info日志信息')
log.debug('debug日志信息')

【python】日志模块以及日志组件使用相关推荐

  1. python log模块_Python日志模块-logging

    一.logging模块 日志的作用可以简单总结为以下3点: 1.程序调试 2.了解软件程序运行情况,是否正常 3.软件程序运行故障分析与问题定位 1.日志的等级 不同的应用程序所定义的日志等级可能会有 ...

  2. PYthon常用模块 logging 日志

    一 (简单应用) import logging logging.debug('debug message') logging.info('info message') logging.warning( ...

  3. python logging模块-写日志、log回滚

    python包/模块,专栏总目录: 1.python自定义模块 2.python模块调用顺序 3.python logging模块 4.python定义跨模块的全局变量 1.logging模块简介 l ...

  4. python logging模块默认日志级别_Python 日志模块logging

    logging模块: logging是一个日志记录模块,可以记录我们日常的操作. logging日志文件写入默认是gbk编码格式的,所以在查看时需要使用gbk的解码方式打开. logging日志等级: ...

  5. python日志模块 超量处理_Python日志模块-多进程日志记录

    一.问题描述 项目中,使用RotatingFileHandler根据日志文件大小来切分日志.设置文件的MaxBytes为1GB, backupCount大小为5. 经查看,发现日志文件的大小均小于10 ...

  6. python log模块_python日志模块logbook使用方法

    python自带了日志模块logging,可以用来记录程序运行过程中的日志信息.同时python还有logbook模块用来取代logging模块,在很多的项目中logbook模块使用也是比较的多,因此 ...

  7. python 打印模块_Python 日志打印模块

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  8. python日志模块 限制日志记录数_python日志记录-logging模块

    1.logging模块日志级别 使用logging模块简单示例: >>>import logging >>>logging.debug("this's a ...

  9. nginx日志模块及日志格式

    2019独角兽企业重金招聘Python工程师标准>>> 配置实例 指令      access_log      log_format      open_log_file_cach ...

最新文章

  1. JSP页面Table的数据拼接
  2. python 数字证书模拟登录_用于生成WebService使用的数字证书及签署证书.python脚本...
  3. 部署SAP UI5应用到ABAP服务器时,Webcontent path的determine逻辑
  4. Objective-C中的@property
  5. 新零售大潮下 联想与BHG Mall签约共建智慧商城
  6. 无锡太湖学院计算机科学与技术宿舍,无锡太湖学院宿舍怎么样
  7. 使用 golang-plugins 时要避免的事情
  8. Python入门--列表元素的判断及遍历,判断指定元素在列表中是否存在,列表元素的遍历,
  9. ASCII码查询及简单说明
  10. 严蔚敏版数据结构视频讲解
  11. dht11 java_树莓派使用DHT11温湿度传感器
  12. USGS官网批量下载卫星数据方法
  13. 数据库监控 Prometheus + Grafana
  14. ECPC16-A.The game of Osho(博弈)
  15. 《管理学》第七章 激励
  16. 计算机网络课程设计组建大型网吧局域网,计算机网络课程设计组建网吧局域网...
  17. akka typed mysql_akka-typed(8) - CQRS读写分离模式
  18. java的web开发之旅——第1站html
  19. uniapp 安卓app 实现app加固(360加固)
  20. (二)卷积神经网络之——AlexNet

热门文章

  1. scipy.stats
  2. oracle强大函数,oracle 函数排行
  3. 架构解密从分布式到微服务:微服务架构到底是什么?
  4. Spring Boot学习总结(20)——提升开发效率之热部署
  5. 垂直导航菜单制作技巧一
  6. linux温故知新十
  7. java 父类 new 子类
  8. java project 连接hibernate 出错
  9. easy_install django==1.4.2_百度搜索
  10. Scala:未受重视却潜力巨大的Android编程语言