zoukankan      html  css  js  c++  java
  • Python连载29-log的使用需求实现举例

    一、Format类

    1.直接实例化

    2.可以继承Format添加特殊字符

    3.三个参数

    (1)fmt:指定消息格式化字符串,如果不指定该参数则默认使用message的原始值

    (2)datemt:指定日期格式字符串,如果不指定该参数,则默认使用“%Y-%m-%d %H:%M:%S"

    (3)style:Python3.2新增的参数,可取值为”%“,“{”和“¥”,如果不指定默认使用“%”

    二、Filter类

    1.可以被Handler和Logger使用

    2.控制传递过来的信息的具体内容。

    三、例子

    #现在有一下几个日志记录的需求:

    #(1)要求将所有级别的所有日志写入磁盘文件

    #(2)all.log文件中记录所有的日志信息,日志格式为:日期和时间-日志级别-日志信息

    #(3)error.log文件中单独记录error及以上级别的日志信息,日志格式:日期和时间-日志级别-文件名【:行号】- 日志信息

    #(4)要求all.log在每天凌晨进行日志切割

    #分析

    #(1)要记录所有级别的日志,因此日志器的有效level需要设置为最低级别  --DEBUG

    #(2)日志需要被发送到两个不同的目的地,因此需要为日志设置两个handler;另外。两个目的地都是磁盘文件。因此这两个handler都是与fileHander

    #(3)all.log要求按照时间进行日志切割,因此它需要logging.handler.TimeRotatingFileHandler;而error.log没有要求日志切割。因此

    #(4)两个日志文件的格式不同,因此需要对两个handler分别进行设置格式器

    import logger
    
    import logging.handlers
    
    import datetime
    
    #定义Logger
    
    logger = logging.getLogger("mylogger")
    
    logging.setLevel(logging.DEBUG)
    
     
    
    rf_handler = logging.handlers.TimedRotatingFileHandler("all.log",when="midnight",interval=1,backupCount=7,atTime=None)
    
    rf_handler.setFormatter(logging.Formatter("%(asctime)s-%(levelname)s-%(message)s"))
    
     
    
    f_handler = logging.FileHandler("error.log")
    
    f_handler = setLevel(logging.ERROR)
    
    f_handler.setFormat(logging.Formatter("%(asctime)s-%(levelname)s-%(filename)s[:%(lineno)d-%(message)s)")
    
     
    
    #把相应的处理器组装到logger上
    
    logger.addHandler(rf_handler)
    
    logger.addHandler(f_handler)
    
     
    
    logger.debug("debug message")
    
    logger.info("info message")
    
    logger.warning("warning message")
    
    logger.error("error message")
    
    logger.critical("critical message")

    四、源码

    d23_3_log_example.py

    地址:https://github.com/ruigege66/Python_learning/blob/master/d23_3_log_example.py

    2.CSDN:https://blog.csdn.net/weixin_44630050(心悦君兮君不知-睿)

    3.博客园:https://www.cnblogs.com/ruigege0000/

    4.欢迎关注微信公众号:傅里叶变换

  • 相关阅读:
    动手动脑(类与对象作业再次提交)
    论团队(类与对象邮箱作业再次提交)
    流于形式的沟通
    加密
    string类中一些方法的使用
    StringEquals的用法
    命令行接收数字求和
    计算机思维
    SpringBoot之Callable处理异步请求
    MySQL8.0 zip版本 安装
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/11312727.html
Copyright © 2011-2022 走看看