zoukankan      html  css  js  c++  java
  • logging模块

    日志相关概念

    内容

    日志可以追踪软件运行时所发生的事件,开发者可以在代码中调用记录日志的模块来表明程序运行到这里发生了什么。

    一条日志信息可以包括:

    打印时间

    日志级别

    发生位置

    日志内容

    等级

    在测试环境需要debug等级日志,正式上线后需要info等级日志,如果有需要,线上业务的日志等级也可以调回到debug。

    debug等级记录大量运行信息,意味着消耗大量磁盘空间、cpu等机器性能。

    开发者可以通过修改配置文件的方式调整级别,重启或者重载配置的方式生效。

    实现

    几乎所有开发语言都会内置日志性格功能,python的日志模块就是logging,也有一些优秀的第三方库,比如log4j(java)

    logging模块

    basicConfig:

    logging.basicConfig函数各参数:
    
    filename:指定日志文件名;
    
    filemode:和file函数意义相同,指定日志文件的打开模式,'w'或者'a';
    
    format:指定输出的格式和内容,format可以输出很多有用的信息,
    
    参数:
    
    %(levelno)s:打印日志级别的数值
    %(levelname)s:打印日志级别的名称
    %(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]
    %(filename)s:打印当前执行程序名
    %(funcName)s:打印日志的当前函数
    %(name)s:打印函数名
    %(lineno)d:打印日志的当前行号
    %(asctime)s:打印日志的时间
    %(thread)d:打印线程ID
    %(threadName)s:打印线程名称
    %(process)d:打印进程ID
    %(message)s:打印日志信息
    datefmt:指定时间格式,同time.strftime();
    
    level:设置日志级别,默认为logging.WARNNING;
    

      

    记录器Logger:

    Logger是记录日志的入口

    日志器(Logger)是有层级关系的,
    上面调用的logging模块级别的函数所使用的日志器是RootLogger类的实例,
    其名称为'root',它是处于日志器层级关系最顶层的日志器,
    且该实例是以单例模式存在的。
    

      

    import logging
    
    logging.basicConfig(filename='TestApp.log',level=logging.DEBUG,format='%(asctime)s :: %(filename)s-%(lineno)d :: %(message)s')
    logging.info("Start print log")
    logging.debug("Do something")
    logging.warning("Something maybe fail.")
    logging.info("Finish")
    
    >>
    2018-11-23 14:42:43,001 :: tmp.py-4 :: Start print log
    2018-11-23 14:42:43,002 :: tmp.py-5 :: Do something
    2018-11-23 14:42:43,002 :: tmp.py-6 :: Something maybe fail.
    2018-11-23 14:42:43,002 :: tmp.py-7 :: Finish
    #logging默认使用的日志其Logger是RootLogger类的实例,其名称为'root',它是处于日志器层级关系最顶层的日志器
    

      

    import logging 
    
    logging.basicConfig(filename='TestApp.log',level=logging.DEBUG,format='%(asctime)s :: %(name)s :: %(message)s')
    logger = logging.getLogger(__name__)
    
    logger.info("Start print log")
    logger.debug("Do something")
    logger.warning("Something maybe fail.")
    logger.info("Finish")
    
    >>
    
    2018-11-23 15:39:52,235 :: __main__ :: Start print log
    2018-11-23 15:39:52,235 :: __main__ :: Do something
    2018-11-23 15:39:52,235 :: __main__ :: Something maybe fail.
    2018-11-23 15:39:52,235 :: __main__ :: Finish
    
    #创建一个日志器实例
    #logging.getLogger([name=None])
    # 指定name,返回一个名称为name的Logger实例。
    #如果再次使用相同的名字,是实例化一个对象。
    #未指定name,返回Logger实例,名称是root,即根Logger。
    

      

     

  • 相关阅读:
    【Python基础编程036 ● 容器 : 字符串、列表、元组、字典 ● 定义字符串的格式】
    【Python基础编程035 ● 判断语句和循环语句 ● for循环语句】
    【Python基础编程034 ● 判断语句和循环语句 ● while循环实现猜拳游戏】
    【Python基础编程033 ● 判断语句和循环语句 ● 转义字符】
    【Python基础编程032 ● 判断语句和循环语句 ● 循环嵌套中的break和continue的使用 】
    【Python基础编程031 ● 判断语句和循环语句 ● whie循环练习-打印三角形 】
    【Python基础编程030 ● 判断语句和循环语句 ● while循环练习-打印正方形 】
    (14)python网络编程,多线程socket(待写)
    【IO压测】sql server使用Diskspd测试SQL Server IO存储
    sql server使用T-SQL读取扩展事件
  • 原文地址:https://www.cnblogs.com/jabbok/p/10008422.html
Copyright © 2011-2022 走看看