• Selenium3+python自动化012+日志logging基本用法、高级用法


    1.关键字:

      login 登录
      log 日志
      logging python日志模块

    2.什么叫日志:

    日志用来记录用户行为或者代码的执行过程

    3.日志使用的地方:
      1.排错的时候需要打印很多细节来帮助排错
      2.有一些用户行为,有没有错都要记录下来(后台)
      3.严重的错误记录下来

    4.logging模块的日志级别,总开关小于分开发以总开关为准,总开关大于分开关以分开关为准。

     

    两种书写格式:

    格式一:

    格式二:

     

     日志输出

     

    上面列表中的日志等级是从上到下依次升高的,即:DEBUG < INFO < WARNING < ERROR < CRITICAL,而日志的信息量是依次减少的;

     

    问题:

    问题1:为什么前面两条日志没有被打印出来?

      这是因为logging模块提供的日志记录函数所使用的日志器设置的日志级别是WARNING,因此只有WARNING级别的日志记录以及大于它的ERROR和CRITICAL级别的日志记录被输出了,而小于它的DEBUG和INFO级别的日志记录被丢弃了。

    问题2:默认打印出来的日志信息中各字段表示什么意思?为什么会这样输出?

     上面输出结果中每行日志记录的各个字段含义分别是:日志级别:日志器名称:日志内容

    问题3:怎么修改logging这些默认设置呢?

      其实很简单,在我们调用上面这些日志记录函数之前,手动调用一下basicConfig()方法,把我们想设置的内容以参数的形式传递进去就可以了。

     

    5. logging.basicConfig()函数

    该方法用于为logging日志系统做一些基本配置语法:logging.basicConfig(**kwargs)

    实例2:

     

     

    第一个例子,默认级别为warning

     

    第二个例子,设置日志级别

     

    第三个例子,输出日志格式化

     

    第四个例子,输出到文件

     

     有了filename参数就不会直接输出到控制台,而是写入文件,如下图

     

     

    第五个例子,输出到文件(二)

     

     

     

    第六个例子,写入到文件,同时将错误信息输出到控制台

     

     

     

     logging模块讲解

     1 import logging
     2 import time
     3 import os
     4 
     5 class LoggingMethod():
     6     # 创建方法
     7     def getlogger(self):
     8         logger = logging.getLogger()
     9         logger.setLevel(logging.INFO)# Log等级总开关
    10 
    11         now=time.strftime('%Y-%m-%d_%H_%M_%S')
    12         filename=os.path.dirname(os.path.abspath('.')) + '\log\' + now + '.log'
    13         # 创建一个handler,用于写入日志文件
    14         fh = logging.FileHandler(filename)#mode='a'默认以追加的形式写入文件,如果想清空重写用“mode='w'”
    15         fh.setLevel(logging.INFO)  # 输出到file的log等级的开关
    16 
    17         # 定义handler的输出格式
    18         formatter = logging.Formatter("%(asctime)s - %(name)s-%(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
    19 
    20         fh.setFormatter(formatter)
    21         # 将FileHandler对象添加到handler里面
    22         logger.addHandler(fh)
    23 
    24         return logger
    25 
    26 if __name__=='__main__':
    27     logger=LoggingMethod().getlogger()
    28 
    29     # 日志
    30     logger.debug('debug message')
    31     logger.info('info message')
    32     logger.warning('warning message')
    33     logger.error('error message')
    34     logger.critical('critical message')
    LoggingMethod

     设置log路径

     

     

     1 import logging
     2 import time
     3 import os
     4 
     5 # 同一天的所有日志输入到同一个log文件
     6 class LoggingMethod():
     7     def getlogger(self):
     8         # 设置存储日志的文件名
     9         now = time.strftime('%Y-%m-%d')
    10         filename = os.path.dirname(os.path.abspath('.')) + '\log\' + now + '.log'
    11         err_filename=os.path.dirname(os.path.abspath('.')) + '\log\' + now+'-error' + '-' + '.log'
    12         # 第一步,创建一个logger
    13         logger = logging.getLogger()#实例化logger对象
    14         logger.setLevel(logging.DEBUG)  # Log等级总开关
    15         # 第二步,创建一个handler,用于写入所有日志
    16         fh1 = logging.FileHandler(filename,encoding='utf-8')
    17         fh1.setLevel(logging.DEBUG)  # 输出到file的log等级的开关
    18         # 创建一个handler,用于写入错误日志
    19         fh2 = logging.FileHandler(err_filename,encoding='utf-8')
    20         fh2.setLevel(logging.WARNING)  # 输出到file的log等级的开关
    21         # 第三步,定义handler的输出格式
    22         formatter = logging.Formatter('%(asctime)s - %(levelname)s -%(pathname)s-%(lineno)d'+''+'- %(message)s')
    23         fh1.setFormatter(formatter)
    24         fh2.setFormatter(formatter)
    25         # 第四步,将handlers 添加到 logger
    26         logger.addHandler(fh1)
    27         logger.addHandler(fh2)
    28 
    29         return logger
    30 if __name__=='__main__':
    31     logger = LoggingMethod().getlogger()
    32     logger.info('测试info日志')
    33     logger.error('error')
    日志输入到文件和控制台

     

     

  • 相关阅读:
    不指定虚拟路径的前提下通过http访问pdf、图片等文件
    Java Service Wrapper将java程序设置为服务
    C# 上传excel文档解析出里面数据
    如何同时启动多个Tomcat服务
    struts2的action的知识点和利用action向页面注入值的操作
    IOS6 字体高亮显示
    微软安全新闻聚焦-双周刊第三十五期
    工厂三兄弟之工厂方法模式(四)
    清空文件夹里面的所有文件和文件夹
    OOP设计模式[JAVA]——03职责链模式
  • 原文地址:https://www.cnblogs.com/liunaixu/p/11078569.html
Copyright © 2020-2023  润新知