美文网首页
【Python】使用logging打日志

【Python】使用logging打日志

作者: keloli | 来源:发表于2018-02-14 06:24 被阅读114次

    logging介绍:

    我们经常使用print()函数打印一些信息到控制台,方便的查看结果和一些调试信息。print()确实是方便和易用,但是也有一些缺点,比如打印出来的信息不能保存,再次运行程序时,之前打印出来的结果就被清空了。
    Python中内置一个日志模块——logging,通过它我们就可以很方便的在Python代码中记录简单的程序日志。

    logging使用:

    logging模块将日志分为了五个等级(从低到高):

    • DEBUG:调试信息,通常在诊断问题的时候用得着;
    • INFO:普通信息,确认程序安装预期运行;
    • WARNING:警告信息,表示发生了意想不到的事情,或者指示接下来可能会出现一些问题,但是程序还是继续运行;
    • ERROR:错误信息,程序运行中出现了一些问题,一些功能没有执行;
    • CRITICAL:危险信息,一个严重的错误,导致程序无法继续运行。
      上述的五个等级的日志信息分别使用:logging模块的debug()、info()、warning()、error()、critical()方法来实现。
      默认情况下,logging使用的日志级别是warning,这表示只有在这个级别及其以上级别的日志信息才会被记录,所以默认情况下debug信息和info信息都不会被显示出来。
    # 测试logging的等级
    import logging
    logging.info("打印信息")
    logging.warning("警告信息")
    logging.error("出现了错误")
    
    # 控制台输出:
    WARNING:root:警告信息
    ERROR:root:出现了错误
    
    # 我们使用logging模块的basicConfig()方法,修改一个日志输出等级为INFO
    import logging
    logging.basicConfig(level=logging.INFO)
    logging.error("出现了错误")
    logging.info("打印信息")
    logging.warning("警告信息")
    
    # 控制台输出:
    INFO:root:打印信息
    WARNING:root:警告信息
    ERROR:root:出现了错误
    
    # 记录的日志信息除了打印到控制台之外,我们还能够将其写入文件中。同样是使用basicConfig()方法进行设置
    import logging
    logging.basicConfig(level=logging.INFO,filename='test.log')
    logging.error("出现了错误")
    logging.info("打印信息")
    logging.warning("警告信息")
    
    # 执行后会将以上信息写到“test.log”文件下,重复执行会将信息追加在原来的文件后
    
    # 如果希望每次log都覆盖原来的log,就在basicConfig()方法中使用filemode参数进行设置
    import logging
    logging.basicConfig(level=logging.INFO,filename='test.log',filemode='w')
    logging.error("出现了错误")
    logging.info("打印信息")
    logging.warning("警告信息")
    
    # 执行后本次程序输出的log将会将原来的log内容覆盖
    
    # 如果我们想改变日志消息的格式呢,使用basicConfig()方法,利用其format参数进行设置
    import logging
    logging.basicConfig(level=logging.INFO,filename='test.log',format="%(levelname)s:%(message)s")
    logging.error("出现了错误")
    logging.info("打印信息")
    logging.warning("警告信息")
    
    # 这次long输出的信息就不包含'root'
    
    # logging支持的格式还不止这两种,我们来看看:
    %(asctime)s:日志创建时的普通时间;
    %(created)f:日志创建时的时间(由time.time()返回);
    %(filename)s:文件名;
    %(funcName)s:调用日志记录的函数;
    %(levelname)s:日志消息的文本级别;
    %(levelno)s:日志消息的数字级别;
    %(lineno)d:调用日志消息的行号;
    %(msecs)d:创建时间的毫秒部分;
    %(message)s:日志消息;
    %(name)s:日志器的名称;
    %(pathname)s:记录日志的源文件的路径名;
    %(process)d:进程ID;
    %(processName)s:进程名;
    %(thread)d:线程ID;
    %(threadName)s:线程名;
    %(relativeCreated)d:创建日志记录的时间(以毫秒为单位)
    
    # 借助于这些格式,我们可以自定义日志记录,比如显示时间:
    import logging
    logging.basicConfig(level=logging.INFO,filename='test.log',format="%(levelname)s:%(asctime)s:%(message)s")
    logging.error("出现了错误")
    logging.info("打印信息")
    logging.warning("警告信息")
    

    参考资料:

    https://zhuanlan.zhihu.com/p/31893724
    https://zhuanlan.zhihu.com/p/32043593

    相关文章

      网友评论

          本文标题:【Python】使用logging打日志

          本文链接:https://www.haomeiwen.com/subject/dosjtftx.html