zoukankan      html  css  js  c++  java
  • [Tips] python logging模块

    1. 使用:
    import logging  # 引入logging模块
    # 将信息打印到控制台上
    logging.debug("调试消息")
    logging.info("普通消息")
    logging.warning("警告消息")
    logging.error("错误消息")
    logging.critical("重要消息")
    
    1. 通过logging.basicConfig函数进行配置了日志级别和日志内容输出格式
      log级别设置:
    logging.basicConfig(level=logging.NOTSET) 
    logging.CRITICAL # 权重50
    logging.ERROR    # 权重40
    logging.WARNING  # 权重30
    logging.INFO     # 权重20
    logging.DEBUG    # 权重10
    logging.NOTSET # 打印上面物种信息
    

    默认是只打印大于等于WARNING级别的日志。

    1. 日志输出到文件:
    import os
    logging.basicConfig(filename=os.path.join(os.getcwd(),'log.txt'),level=logging.DEBUG)
    logging.debug('this is a message')
    

    设置时间和格式

    
        logging.basicConfig(
            level=logging.DEBUG,  # 定义输出到文件的log级别,大于此级别的都被输出
            format='%(asctime)s  %(filename)s : %(levelname)s  %(message)s',  # 定义输出log的格式
            datefmt='%Y-%m-%d %A %H:%M:%S',  # 时间
            filename=logFilename,  # log文件名
    
    1. 使用logger对象
      当要在多个文件中使用同样的logging配置时,需要使用logger日志器,它是logging的一个主要组成部分之一。

    示例(参考:https://www.cnblogs.com/hanmk/p/10448963.html):

    # -*- coding:utf-8 -*-
    import logging
    import os
    from utils import getcwd
    
    
    log_path = os.path.dirname(getcwd.get_cwd())
    print(log_path)
    class Logger:
        def __init__(self,loggername):
    
            #创建一个logger
            self.logger = logging.getLogger(loggername)
            self.logger.setLevel(logging.DEBUG)
    
            #创建一个handler,用于写入日志文件
            log_path = os.path.dirname(getcwd.get_cwd())+"/logs/" # 指定文件输出路径,注意logs是个文件夹,一定要加上/,不然会导致输出路径错误,把logs变成文件名的一部分了
            logname = log_path + 'out.log' #指定输出的日志文件名
            fh = logging.FileHandler(logname,encoding = 'utf-8')  # 指定utf-8格式编码,避免输出的日志文本乱码
            fh.setLevel(logging.DEBUG)
    
            #创建一个handler,用于将日志输出到控制台
            ch = logging.StreamHandler()
            ch.setLevel(logging.DEBUG)
    
            # 定义handler的输出格式
            formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')
            fh.setFormatter(formatter)
            ch.setFormatter(formatter)
    
            # 给logger添加handler
            self.logger.addHandler(fh)
            self.logger.addHandler(ch)
    
    
        def get_log(self):      """定义一个函数,回调logger实例"""
            return self.logger  
    
    
    if __name__ == '__main__':
        t = Logger("hmk").get_log().debug("User %s is loging" % 'jeck')
    

    使用

    logger.debug('this is a logger debug message')
    logger.info('this is a logger info message')
    logger.warning('this is a logger warning message')
    logger.error('this is a logger error message')
    logger.critical('this is a logger critical message')
    
  • 相关阅读:
    【YBTOJ】【Luogu P4398】[JSOI2008]Blue Mary的战役地图
    【YBTOJ】【Luogu P2601】[ZJOI2009]对称的正方形
    Hystrix超时设置无效及解决原因
    nginx的压缩
    使用nginx配置本地yum 源
    通过nginx制作类似阿里云镜像下载的网站
    nginx下配置显示网站图标
    nginx---自定义日志格式和json日志
    git clone error: RPC failed; result=35, HTTP code = 0 fatal: The remote end hung up unexpectedly
    nginx---缓存
  • 原文地址:https://www.cnblogs.com/immortalBlog/p/13730901.html
Copyright © 2011-2022 走看看