[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')
原文地址:https://www.cnblogs.com/immortalBlog/p/13730901.html