zoukankan      html  css  js  c++  java
  • python模块-logging的智商上限

    logging,故名肆意就是正在进行日志,我艹,这个文化底蕴!

    logging是python内置的日志模块,便于日常程序的日志写入和输出

    logging共分为5个日志等级,分别是:

    debug , info , warning , error , critical (已按等级顺序排列)

    其中info是在今后经常应用的日志等级,对于logging来说,默认等级是warning,换句话说就是等于或高于warning等级,才会进行输出,默认warning等级,会输出warning,error,critical等级

    代码示例:

     1 # 编辑者:闫龙
     2 import logging
     3 logging.debug("debug")
     4 logging.info("info")#最为常用的输出等级
     5 logging.warning("warning")
     6 logging.error("error")
     7 logging.critical("critical")
     8 
     9 #打印结果:
    10 # WARNING:root:warning
    11 # ERROR:root:error
    12 # CRITICAL:root:critical

    那么对于logging日志输出格式,和logging的等级配置要如何进行呢?

    在logging中内置了两种方式进行操作,第一种是basicConfig,第二种是logger

    那么这两种方式有什么区别呢?下面逐一解析:

    第一种方式,baseConfig:

    代码示例:

     1 # 编辑者:闫龙
     2 import logging
     3 logging.basicConfig(
     4     level=logging.DEBUG,#更改日志的默认等级为DEBUG
     5     format="%(asctime)s %(message)s",
     6     #format中的格式可以在basicConfig的说明文档中查看
     7     datefmt="%Y-%m-%d %H:%M:%S",
     8     #时间格式,秒原本为%s但在字符串中%s是占位符,所以这里必须使用%S来解决冲突问题
     9     filename="test.log",#日志文件
    10     filemode="a"#文件操作方式为追加写入
    11 )
    12 
    13 logging.debug("debug message")
    14 logging.info("info")#最为常用的输出等级
    15 logging.warning("warning")
    16 logging.error("error")
    17 logging.critical("critical")
    18 
    19 #test.log:
    20 # 2017-04-30 18:41:23 debug message
    21 # 2017-04-30 18:41:23 info
    22 # 2017-04-30 18:41:23 warning
    23 # 2017-04-30 18:41:23 error
    24 # 2017-04-30 18:41:23 critical

    其优势就是简单易操作,但缺点很多,比如无法屏幕和文件一起输出等,所以才有了第二种方式

    第二种方式,logger:常用的日志配置方式

    代码示例:

     1 # 编辑者:闫龙
     2 import logging
     3 logger = logging.getLogger() #实例化一个logger对象
     4 fh = logging.FileHandler("logger2")#实例化一个文件流对象fh
     5 sh = logging.StreamHandler()#实例化一个Stream流对象sh
     6 fm = logging.Formatter("%(asctime)s - %(message)s")
     7 #实例化一个日志格式对象,fm
     8 fh.setFormatter(fm)
     9 #将日志格式对象fm添加到fh对象中,让日志在进行文件输出时的格式是fm中定义的
    10 logger.addHandler(fh)
    11 #将文件流对象fh添加到logger对象中,让日志输出可以是文件流方式
    12 logger.addHandler(sh)
    13 #将文件流对象fh添加到logger对象中,让日志输出可以是Stream流方式
    14 logger.debug("debug message")
    15 logger.info("info")#最为常用的输出等级
    16 logger.warning("warning")
    17 logger.error("error")
    18 logger.critical("critical")
    19 
    20 #logger2:
    21 # 2017-04-30 18:53:22,324 - warning
    22 # 2017-04-30 18:53:22,324 - error
    23 # 2017-04-30 18:53:22,324 - critical
    24 # 2017-04-30 18:57:53,341 - warning
    25 # 2017-04-30 18:57:53,341 - error
    26 # 2017-04-30 18:57:53,342 - critical
    27 #打印结果:
    28 # warning
    29 # error
    30 # critical
    31 # warning
    32 # error
    33 # critical

    按照Yuan先生的理论,Logger配置方式,就像是吸星大法,就是一个吸的过程,你有什么我吸什么,这种方式确实很好理解

    Logger方式将来我们要经常用到,所以一定要记住哦

  • 相关阅读:
    面向对象之单例模式
    面向对象之元类
    面向对象高级1
    面向对象进阶2
    面向对象进阶1
    面向对象基础
    MySQL事务
    【应用容器引擎】Docker笔记
    【Spring Boot】三、嵌入式的Servlet容器
    MySQL优化分析
  • 原文地址:https://www.cnblogs.com/DragonFire/p/6790113.html
Copyright © 2011-2022 走看看