• Python logging模块


    logging模块

    1.列出所有状态并打印到终端。

    import logging
    
    logging.debug("test debug")#调试,除错
    
    logging.info("test")#信息
    
    logging.warning("user [xsk] 3")#警告
    
    logging.error("test error")#错误
    
    logging.critical("server is down") #严重

    注:严重的警告直接打印到终端,重上往下的优先级。

     

    2.将日志打印到文件内。

    import logging
    
    logging.basicConfig(filename='example.log',level=logging.INFO)

    注:自动创建log文件,并将数据自动打印到文件内。

    注:logging.basicConfig():创建日志文件。

    注:filename=:输入日志文件名。

    注:level=:输入报警级别。

    注:输入时,优先级高的将不会输出低优先级的 报警信息。

     

     

    3.记录日志时,加入时间。

    import logging
    
    logging.basicConfig(filename='example.log',level=logging.INFO,format='%(asctime)s %(message)s',datefmt='%m/%d/%Y %I:%M:%S %p')

    注:添加了时间的日志格式变量,可自定义运行格式。

    注:format=‘’:用来添加记录日志格式的模块参数。

    注:datefmt=‘’:时间参数。

     

     

    4、使日志,定义成 终端文件都可以输出。

    import logging
    
    logger = logging.getLogger('TEST-LOG')#自定义名字
    
    logger.setLevel(logging.DEBUG)#设置最低等级
    
    ch = logging.StreamHandler()#终端输出日志
    
    ch.setLevel(logging.WARNING)#最小有限级
    
    fh = logging.FileHandler("access.log",encoding="utf-8")#文件内的日志
    
    fh.setLevel(logging.ERROR)#最小有限级
    
    fh_formatter = logging.Formatter('%(asctime)s %(filename)s:%(lineno)d %(module)s - %(levelname)s %(message)s')#fh日志格式
    
    ch_formatter = logging.Formatter('%(asctime)s %(filename)s:%(lineno)d %(module)s - %(levelname)s %(message)s')#ch日志格式
    
    fh.setFormatter(fh.formatter)#绑定fh handler
    
    ch.setFormatter(ch_formatter)#绑定ch handler
    
    logger.addHandler(fh)#logger 绑定fh handler
    
    logger.addHandler(ch)#logger 绑定ch handler
    
    logger.warning("ddd")#输出
    
    logger.error("error happend..")#输出v

    注:将logger,handler,与formatter绑定。

     

    5.定义日志自定义 删除。

    (1)按文件大小进行,删除。

    import logging
    
    from logging import handlers
    
    logger = logging.getLogger('TEST')
    
    log_file = "timelog.log"
    
    fh = handlers.RotatingFileHandler(filename=log_file,maxBytes=10,backupCount=3,encoding="utf-8")
    
    formatter = logging.Formatter('%(asctime)s %(filename)s:%(lineno)d %(module)s - %(levelname)s %(message)s')
    
    fh.setFormatter(formatter)
    
    logger.addHandler(fh)
    
    logger.warning("test1")
    
    logger.warning("test2")
    
    logger.warning("test3")

    注:需要使用handlers模块

    注:handlers.RotatingFileHandler():来进行定义。

    filename=:文件名

    maxBytes=:定义最大值

    backupCount=:定义最多备份的文件数

    encodoing=:定义字符编码。

     

    (2)按时间进行,删除。

    import logging
    
    from logging import handlers
    
    logger = logging.getLogger('TEST')
    
    log_file = "timelog.log"
    
    fh = handlers.TimedRotatingFileHandler(filename=log_file,when="S",interval=5,backupCount=3)
    
    formatter = logging.Formatter('%(asctime)s %(filename)s:%(lineno)d %(module)s - %(levelname)s %(message)s')
    
    fh.setFormatter(formatter)
    
    logger.addHandler(fh)
    
    import time
    
    logger.warning("test1")
    
    time.sleep(2)
    
    logger.warning("test2")
    
    time.sleep(2)
    
    logger.warning("test3")
    
    time.sleep(2)
    
    logger.warning("test4")

    注:实现了,每5秒钟备份一个日志

    注:handlers.TimedRotatingFileHandler():实现时间备份删除。

    wen=:选择时间类型参数。

    interval=:选择对应参数的数量。

    backupCount=:定义最多备份的文件数

    encodoing=:定义字符编码

     

  • 相关阅读:
    【Unity与Android】02-在Unity导出的Android工程中接入Google AdMob广告
    【Unity与Android】01-Unity与Android交互通信的简易实现
    Unity3D热更新之LuaFramework篇[10]--总结篇
    Unity3D热更新之LuaFramework篇[09]--资源热更新与代码热更新的具体实现
    Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建
    Unity3D热更新之LuaFramework篇[07]--怎么让unity对象绑定Lua脚本
    Unity3D热更新之LuaFramework篇[06]--Lua中是怎么实现脚本生命周期的
    Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween
    Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法
    Unity3d之-使用BMFont制作美术字体
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/7787135.html
Copyright © 2020-2023  润新知