logging模块
@(杂庭忆技)[Python, logging]
018.8.17
简单示例
import logging
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
# 输出
>>WARNING:root:warning
>>ERROR:root:error
默认情况下,logging将日志打印到屏幕上,按WARNING级别
日志等级
CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
设置日志等级以后,程序会自动过滤掉低于设置等级的日志信息。如:当等级为WARNING的时候,包括INFO及以下的日志信息会被过滤掉
简单设置
利用logging模块中的basicConfig()
方法对日志做简单设置
import logging
# 设置日志的基本信息
logging.basicConfig(
level=logging.DEBUG, # 设置等级
filename = "test.log", # 设置输出文件
datefmt = "%Y/%m/%d %H:%M:%S", # 设置时间格式
format = "【%(asctime)s %(levelname)s】 %(lineno)d: %(message)s") # 设置输出格式
logging.debug("debug")
logging.info("info")
logging.warning("warning")
logging.error("error")
运行程序之后,当前目录下会生成一个test.log的文件,内容如下:
可见输出格式是按照参数format指定样子生成的,而asctime,levelname,lineno指定的是需要输出哪些内容,这里依次是:时间,日志等级,出现行号,以及日志内容;如果不看小括号中的内容,其实%s,%d就是格式占位符
当然basicConfig()
的用法并没有完,完整参数如下
- filename:输出文件路径
- filemode:按什么方式写入,w
表示清空内容之后写入,a
表示追加(默认追加模式)
- datefmt:设置时间格式
- style:当format传入了参数的时候,用style参数来指定占位符,可以是:%,{,$
import logging
# 不指定style时,默认%
logging.basicConfig(
level=logging.DEBUG,
datefmt = "%Y/%m/%d",
filename = "test.log",
format = "%(asctime)s %(message)s")
# 指定用符号 {
logging.basicConfig(
level=logging.DEBUG,
style = "{",
datefmt = "%Y/%m/%d",
filename = "test.log",
format = "{asctime} {message}")