zoukankan      html  css  js  c++  java
  • python的logging库

    logging库

    简介

    logging库提供日志打印功能。

    值得一提的是,不仅能打印到日志文件,还能打印到控制台。

    日志级别

    logging一共分为5个级别,从低到高依次为:  DEBUG<INFO<WARNING<ERROR<CRITICAL

    日志参数配置

    配置接口logging.basicConf()

    参数详解

    控制日志的级别

    level=logging.DEBUG  (或者:  logging.INFO  /  logging.WARNING  /  logging.ERROR  /  logging.CRITICAL)

    假如level=logging.WARNING, 那么低于warning级别的日志都不会打印了。

    设置日志名字(也设置了日志存放的路径)

    filename="%s/test.log" % "/home/work"

    设置文件模式

    什么是文件模式呢?

    filemode='w' (或者'a')

    'w'表示什么意思?

    'a'表示什么意思?

    设置日志格式

    控制了每一行日志都输出哪些字段

    format="%(levelname)s-%(asctime)s-%(filename)s-%(funcName)s-%(lineno)d-%(message)s"

    其中每个字段什么意思呢,可以参考下面

    日志级别

    %(levelno)s     日志级别数值

    %(levelname)s 日志级别名字

    %(asctime)s      日志打印时间

    %(filename)s     文件名称

    %(funcName)s   函数名称

    %(lineno)d         行号

    %(process)d      进程ID

    %(thread)d        线程ID

    %(threadName)  线程名称

    %(message)s      打印日志信息

    demo

    (demo-1) 将日志输出在控制台

    import logging
    logging.basicConfig(level=logging.INFO,
                        filemode='a',
                        format="[%(levelname)s][%(asctime)s]%(filename)s-%(lineno)d %(message)s")
    
    if __name__ == "__main__":
    
        logging.debug("this is debug message")
        logging.info("this is info message")
        logging.warning("this is warning message")
        logging.error("this is error message")
        logging.critical("this is critical message")

    输出结果

    [INFO][2018-10-19 11:05:10,013]run.py-29 this is info message
    [WARNING][2018-10-19 11:05:10,013]run.py-30 this is warning message
    [ERROR][2018-10-19 11:05:10,013]run.py-31 this is error message
    [CRITICAL][2018-10-19 11:05:10,013]run.py-32 this is critical message
    
    Process finished with exit code 0

    (demo-2) 将日志输出在日志文件

    logging.basicConfig(level=logging.INFO,
                        filename="%s/run_info.log" % LOG_PATH,
                        filemode='a',
                        format="[%(levelname)s][%(asctime)s]%(filename)s-%(lineno)d %(message)s")
    
    if __name__ == "__main__":
    
        logging.debug("this is debug message")
        logging.info("this is info message")
        logging.warning("this is warning message")
        logging.error("this is error message")
        logging.critical("this is critical message")

    输出结果

    ➜  log cat /Users/liurong07/Documents/code/QA/20181018/log/run_info.log 
    [INFO][2018-10-19 11:07:34,372]run.py-25 this is info message
    [WARNING][2018-10-19 11:07:34,373]run.py-26 this is warning message
    [ERROR][2018-10-19 11:07:34,373]run.py-27 this is error message
    [CRITICAL][2018-10-19 11:07:34,374]run.py-28 this is critical message
    大道至简
  • 相关阅读:
    windows命令行下导入excel数据到SQLite数据库
    Android Studio如何提示函数用法
    在不root手机的情况上读取Data目录上的文件
    OSI七层模型
    设计模式之代理模式
    Android中Javascript中的调用
    cf #205 B Codeforces Round #205 (Div. 2) B. Two Heaps
    uva 10600 次小生成树
    防2B && 图论模板 && 7788
    最大匹配 && 最佳完美匹配 模板
  • 原文地址:https://www.cnblogs.com/liurong07/p/9815186.html
Copyright © 2011-2022 走看看