- 使用:
import logging # 引入logging模块
# 将信息打印到控制台上
logging.debug("调试消息")
logging.info("普通消息")
logging.warning("警告消息")
logging.error("错误消息")
logging.critical("重要消息")
- 通过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级别的日志。
- 日志输出到文件:
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文件名
- 使用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')