打印日志
日志一共分成5个等级,从低到高分别是:DEBUG、INFO、WARNING、ERROR、CRITICAL。
这5个等级,也分别对应5种打日志的方法: debug()
、info()
、warning()
、error()
、critical()
。
设定参数
使用logging.basicConfig
来设定日志输出的参数:
level
:设定root日志输出的等级,如果设定了某个等级,比如level=logging.DEBUG
,那么DEBUG以上等级的日志就都会被输出了,包含DEBUG等级。如不指定,默认为WARNINGformat
:指定日志输出的格式。- format参数中可能用到的格式化串:
字段名 解释 %(name)s Logger的名字 %(levelno)s 数字形式的日志级别 %(levelname)s 文本形式的日志级别 %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有 %(filename)s 调用日志输出函数的模块的文件名 %(module)s 调用日志输出函数的模块名 %(funcName)s 调用日志输出函数的函数名 %(lineno)d 调用日志输出函数的语句所在的代码行 %(created)f 用UNIX标准的表示时间的浮点数表示的当前时间 %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数 %(asctime)s 字符串形式的当前时间。默认格式是 “%Y-%m-%d %H:%M:%S,$MS”。后面的MS是毫秒 %(thread)d 线程ID %(threadName)s 线程名 %(process)d 进程ID %(message)s 用户输出的消息 datefmt
:指定日期的格式filename
:要保存日志到文件路径filemode
:w
为写入文件,a
为添加,默认为添加
不同需求
如果我们根据不同的需求需要不同的日志输出规则,那么我们可以创建logger
对象,并且单独地设定规则,如果不指定的话,为root
。
""" 新设定一个logger,并使用新的规则 """
# 设立新的logger对象
logger = logging.getLogger()
# 设定level
logger.setLevel(logging.DEBUG)
# 创建一个Handler对象,用于纪录日志,相当于filename
file_handler = logging.FileHandler(path)
# 创建一个formatter对象,用于对保存的输出日志的格式进行设置
# format中的内容和之前一样
formatter = logging.Formatter(format)
# 将formatter的格式加入到记录日志中
file_handler.setFormatter(formatter)
# 将文件Handler加入到新logger对象中
logger.addHandler(file_handler)