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')
  • 相关阅读:
    SQL学习记录
    Python 函数和变量作用域
    Python 使用socket实现一对多通信
    Flask wtforms validate_on_submit() 无法返回值问题
    Flask WTForm BooleanField用法
    Python3 中的nonlocal用法
    Python 实现二进制循环效果
    Python 各种类型转换
    第一章:数据结构
    Python Challenge
  • 原文地址:https://www.cnblogs.com/zzzi/p/11354375.html
Copyright © 2011-2022 走看看