zoukankan      html  css  js  c++  java
  • python logging模块学习

    logging 是对程序运行中的日志进行输出记录,用户在程序中设置在哪个地方输出什么信息,方便进行之后问题的排查。

    logging输出有两种方式:输出至控制台 、 输出至文件

    输出至控制台:

    import logging
    logging.warning('Watch out!')  
    logging.info('I told you so')  

    运行上述代码,我们会在控制台看到如下输出:

    WARNING:root:Watch out!

    info消息并没有出现,这是因为logging默认的输出等级是warn 。

    如果想要更改logging的输出等级:在使用logging输出日志前加上语句: logging.basicConfig(level=logging.INFO)

    输出至文件:

    import logging
    
    logging.basicConfig(filename="mylog.log")
    
    logging.info("I told you so")
    logging.warning("Watch out!")

    通过在logging.basicConfig 中设置filename,就可以将日志信息输出至指定文件中保存了。同样,默认等级还是Warn。

    多次运行上述代码,会发现每次输出的日志信息都会追加在文件后面。

    如果想要每次都清空之前的日志信息:使用 filemode 参数,设置 filemode = "w" 。 如果不设置,filemode 默认为 "a"

    logging.basicConfig(filename="mylog.log", filemode="w", level=logging.INFO)

     另外,对于basicConfig() 的调用应该在 info()、warning() 的前面: 因为他被设定为一次性的配置,只有第一次调用会产生操作,随后调用不会再生效(如果没有在一开始指定,那么就会走默认的配置)

    自定义日志展示格式:

    如果想在每条日志上展示更多的信息,如显示等级、时间日期、模块、行数等,使用basicConfig 中的 format参数来实现

    import logging
    
    logging.basicConfig(filename="mylog.log", filemode="w", level=logging.INFO, format='%(asctime)s %(name)s %(levelname)s %(module)s:%(lineno)d %(message)s')
    
    logging.info("I told you so")
    logging.warning("Watch out!")
    
    # 文件日志展示
    2021-10-29 15:50:13,378 root INFO file_logging:10 I told you so
    2021-10-29 15:50:13,380 root WARNING file_logging:11 Watch out!

    日期/时间展示的默认格式如上,如果想要更多的控制日期/时间展示格式,使用datefmt参数

    import logging
    
    logging.basicConfig(filename="mylog.log", filemode="w", level=logging.INFO, format='%(asctime)s %(name)s %(levelname)s %(module)s:%(lineno)d %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p')
    
    logging.info("I told you so")
    logging.warning("Watch out!")
    
    # 文件日志展示
    10/29/2021 03:53:03 PM root INFO file_logging:10 I told you so
    10/29/2021 03:53:03 PM root WARNING file_logging:11 Watch out!
    猪猪侠要努力呀!
  • 相关阅读:
    Max Sum(经典DP)
    Codeforces Round #166 (Div. 2)D. Good Substrings(字符串散列)
    Edge(简单)
    Just a Hook(线段树,成段更新)
    Codeforces Round #169 (Div. 2) D. Little Girl and Maximum XOR(贪心,中等)
    最大连续子序列(经典DP)
    Compromise(求解最长公共子序列并输出)
    如何查看IE型号
    并查集中Sfind函数的返回值错误,伤了我两天~!
    最大流的非递归Dinic算法
  • 原文地址:https://www.cnblogs.com/mlllily/p/15480880.html
Copyright © 2011-2022 走看看