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

    import  logging
    #常用日志模块
    #Logger:即 Logger Main Class,是我们进行日志记录时创建的对象,我们可以调用它的方法传入日志模板和信息,来生成一条条日志记录,称作 Log Record。
    # Log Record:就代指生成的一条条日志记录。
    # Handler:即用来处理日志记录的类,它可以将 Log Record 输出到我们指定的日志位置和存储形式等,如我们可以指定将日志通过 FTP 协议记录到远程的服务器上,Handler 就会帮我们完成这些事情。
    # Formatter:实际上生成的 Log Record 也是一个个对象,那么我们想要把它们保存成一条条我们想要的日志文本的话,就需要有一个格式化的过程,那么这个过程就由 Formatter 来完成,返回的就是日志字符串,然后传回给 Handler 来处理。
    # Filter:另外保存日志的时候我们可能不需要全部保存,我们可能只需要保存我们想要的部分就可以了,所以保存前还需要进行一下过滤,留下我们想要的日志,如只保存某个级别的日志,或只保存包含某个关键字的日志等,那么这个过滤过程就交给 Filter 来完成。
    # Parent Handler:Handler 之间可以存在分层关系,以使得不同 Handler 之间共享相同功能的代码。

    #第一部分
    # logging.debug('debug message')
    # logging.info('info ,message')
    # logging.warning('warning message')
    # logging.error('error message')
    # logging.critical('critical message')
    #logging的级别、权限 deubug与info级别不足 不打印
    #默认只会打印下三个

    #第二部分 创建日志 屏幕 文件二选一
    # logging.basicConfig(level = logging.DEBUG,
    # format = '%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
    # datefmt='%a,%d %b %Y %H:%M:%S',
    # filename='test.log',
    # #只要有filename就默认为文件存储 若没有直接显示在屏幕上
    # filemode='w')
    #修改配置

    # logging.debug('debug message')
    # logging.info('info ,message')
    # logging.warning('warning message')
    # logging.error('error message')
    # logging.critical('critical message')

    #结果:line对应程序的第几行 levelname指DEBUG、INFO等级别名 asctime对应datefmt filename可指路径
    #Wed,14 Aug 2019 11:50:42 logger.py[line:22] DEBUG debug message
    # Wed,14 Aug 2019 11:50:42 logger.py[line:23] INFO info ,message
    # Wed,14 Aug 2019 11:50:42 logger.py[line:24] WARNING warning message
    # Wed,14 Aug 2019 11:50:42 logger.py[line:25] ERROR error message
    # Wed,14 Aug 2019 11:50:42 logger.py[line:26] CRITICAL critical message

    #第三部分 同时创建文本与屏幕日志
    logger=logging.getLogger()
    #创建一个handler,用于写入日志文件

    fh=logging.FileHandler('test,log')
    #再创建一个handler,用于输出到控制台 文件对象 文件输出流 所以需要一个参数放文件

    ch=logging.StreamHandler()
    #屏幕对象
    formatter=logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    #formatter 为输出格式

    fh.setFormatter(formatter)

    ch.setFormatter(formatter)
    #为简便屏幕与文件公用一个输出格式,也可以不同
    logger.addHandler(fh)
    logger.addHandler(ch)
    #若想仅文件输出可引掉这句 仅屏幕输出同理

    logger.setLevel(logging.DEBUG)
    #更改权限

    logger.debug('debug message')
    logger.info('info ,message')
    logger.warning('warning message')
    logger.error('error message')
    logger.critical('critical message')
  • 相关阅读:
    26 转义符 re模块 方法 random模块 collection模块的Counter方法
    25 正则表达式
    24 from 模块 import 名字
    24 from 模块 import 名字
    24 from 模块 import 名字
    23 析构方法 items系列 hash方法 eq方法
    21 isinstance issubclass 反射 _str_ _new_ _len_ _call_
    20 属性, 类方法, 静态方法. python2与python3的区别.
    python(1)
    python之字符串格式化
  • 原文地址:https://www.cnblogs.com/zzzi/p/11354375.html
Copyright © 2011-2022 走看看