• logging日志模块


     参考:www.cnblogs.com/alex3714/articles/5161349.html

    写入日志,运行一次,之后会一直追加到该文件,不会覆盖原来信息

    import logging
    
    logging.basicConfig(filename="log.log")
    
    logging.debug("logging.debug")
    logging.info("logging.info")
    logging.warning("logging.warning")
    logging.error("logging.error")
    '''
    结果:默认只写入等级为warning以及error的
    WARNING:root:logging.warning
    ERROR:root:logging.error
    '''

    指定写入等级

    import logging
    
    logging.basicConfig(filename="log.log",level=logging.DEBUG)
    
    logging.debug("logging.debug")
    logging.info("logging.info")
    logging.warning("logging.warning")
    logging.error("logging.error")
    '''
    结果:这里指定了等级debug之上的都能记录
    DEBUG:root:logging.debug
    INFO:root:logging.info
    WARNING:root:logging.warning
    ERROR:root:logging.error
    
    '''

     

    • python使用logging模块纪录日志涉及四个主要类
    • logger提供了应用程序可以直接使用的接口;
    • handler将(logger创建的)日志纪录发送到合适的目的输出;
    • filter提供了细度设备来决定输出哪条日志纪录;
    • formatter决定日志纪录的最终输出格式。
    %(name)s        Logger的名字
    %(levelno)s 数字形式的日志级别
    %(levelname)s 文本形式的日志级别
    %(pathoname)s 调用日志输出函数的模块的完整路径吗,可能没有
    %(filename)s 调用日志输出函数的模块的文件名
    %(module)s 调用日志输出函数的模块名
    %(funcName)s 调用日志输出函数的函数名
    %(lineno)d 调用日志输出函数的语句所在的代码行
    %(created)f 当前时间,用UNIX标准的标准时间的浮点数
    %(relativeCreated)d 输出日志信息时 自Logger创建以来的好秒数
    %(asctime)s 字符串形式的当前时间爱你。默认格式为"2003-07-08 16:49:45,896" 逗号后面的是毫秒
    %(thread)d 线程ID。可能没有
    %(threadName)s 线程名,可能没有
    %(process)d 进程ID,可能没有
    %(message)s 用户输出的信息

    import logging
    
    logging.basicConfig(filename="log.log",
                        level=logging.DEBUG,
                        format="%(asctime)s %(filename)s:%(lineno)d - %(levelname)s: %(message)s",
                        datefmt="%m/%d/%Y %I:%M:%S %p")
    logging.debug("logging.debug")
    logging.info("logging.info")
    logging.warning("我的logging.warning")
    logging.error("logging.error")
    import logging
    
    logger = logging.getLogger("test.log")#设定日志放置位置
    logger.setLevel(logging.DEBUG)#设定日志写入的等级
    
    
    ch = logging.StreamHandler()#增加一个handler,这里是用于打印屏幕的handler
    ch.setLevel(logging.WARNING)#设置打印到屏幕的等级,为了区分,这里设置与上面不同
    
    fh = logging.FileHandler("access.log",encoding="utf-8")#定义屏幕日志放置文件名
    fh.setLevel(logging.ERROR)#定义放置到屏幕文件的等级为error的
    
    #定义屏幕日志写入格式
    fh_format = logging.Formatter("%(asctime)s %(filename)s:%(lineno)d - %(levelname)s: %(message)s")
    fh.setFormatter(fh_format)
    #定义屏幕显示写入的格式
    ch_format = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
    ch.setFormatter(ch_format)
    
    #将fh,ch加入到logger里
    logger.addHandler(fh)
    logger.addHandler(ch)
    
    logger.warning("logging.warning")
    logger.error("logging.error")

    文件自动截断功能

    import logging
    
    from logging import handlers
    
    logger = logging.getLogger("test")
    
    log_file = "timelog.log"
    #根据文件大小截断,之类是10字节,文件个数最多为3
    fh = handlers.RotatingFileHandler(filename=log_file,maxBytes=10,backupCount=3)
    
    #根据文件时间截断,这里5秒,文件最多生成3个,when,S:秒   M:分  H:小时  W:每星期,interval == 0,则是周一  midnight表示每天凌晨
    # fh = handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3)
    
    
    formatter = logging.Formatter('%(asctime)s %(module)s:%(lineno)d %(message)s')
    
    fh.setFormatter(formatter)
    
    logger.addHandler(fh)
    
    
    logger.warning("test1")
    logger.warning("test12")
    logger.warning("test13")
    logger.warning("test14")
    logger.warning("test15")
    logger.warning("test16")
    大小截断
    import logging
    
    from logging import handlers
    
    logger = logging.getLogger("test")
    
    log_file = "timelog.log"
    
    
    #根据文件时间截断,这里5秒,文件最多生成3个,when,S:秒   M:分  H:小时  W:每星期,interval == 0,则是周一  midnight表示每天凌晨
    fh = handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3)
    
    
    formatter = logging.Formatter('%(asctime)s %(module)s:%(lineno)d %(message)s')
    
    fh.setFormatter(formatter)
    
    logger.addHandler(fh)
    import time
    
    logger.warning("test1")
    time.sleep(2)
    logger.warning("test12")
    time.sleep(2)
    logger.warning("test13")
    logger.warning("test14")
    time.sleep(2)
    logger.warning("test15")
    logger.warning("test16")
    时间截断
  • 相关阅读:
    (转)CortexM3 (NXP LPC1788)之IIS控制器
    (转)ARMThumb 过程调用标准
    (转)CortexM3 (NXP LPC1788)之看门狗定时器对Flash编程的影响
    (转)CortexM3 (NXP LPC1788)之ADC数模转换器的应用
    (笔记)电路设计(一)之上拉电阻与下拉电阻的应用
    (转)CortexM3 (NXP LPC1788)之EEPROM存储器
    (转)CortexM3 (NXP LPC1788)之IIS应用UDA1380进行音频数据播放
    (转)CortexM3 (NXP LPC1788)之WDT窗口看门狗定时器
    (转)CortexM3 (NXP LPC1788)之SDRAM操作
    (转)CortexM3 (NXP LPC1788)之IIC应用PCA9532进行IO扩展和LED亮度控制
  • 原文地址:https://www.cnblogs.com/cheng662540/p/8192561.html
Copyright © 2020-2023  润新知