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')
  • 相关阅读:
    记一次网站迁移的过程
    如何才能搜索微信群和网盘群
    2021最新车载u盘歌曲集合,每轴更新。想要拉你入群
    工具分享:目录生成器
    福利,剪映PC版来了~ 支持windos系统和苹果系统
    微信8.0来了,可以加1w人好友,微商必看!!!
    centOS7安装 redis server
    Task handler raised error: ValueError('not enough values to unpack (expected 3, got 0)')
    《More Effective C++》读书笔记(下)
    《More Effective C++》读书笔记(中)
  • 原文地址:https://www.cnblogs.com/zzzi/p/11354375.html
Copyright © 2011-2022 走看看