python logging模块简介
logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等。相对于print,该模块具有可以决定在打印什么级别的信息和将信息输出放置在什么地方的优点。
1.基本使用
配置logging的基本设置,并在控制台输出:
import logging
logging.basicConfig(level = logging.INFO, #设置输出信息等级
format = '%(asctime)s - %(name)s - [%(levelname)s]: %(message)s') #设置输出格式
logger = logging.getLogger('logger test')
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")
运行结果如下图所示:
当将输出level设置为DEBUG的时候,DEBUG信息也被输出如下图所示:
logging.basicConfig函数中各个参数定义如下:
filename:指定日志文件名;
filemode:和file函数意义相同,指定日志文件的打开模式,’w’或者’a’;
datefmt:指定时间格式,同time.strftime();
level:设置日志级别,默认logging.WARNING,具体包FATAL/CRITICAL/ERROR/WARNNING/INFO/DEBUG等几个消息级别;
stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略;
format:指定输出的格式和内容,具体参数如下
%(levelno)s:打印日志级别的数值
%(levelname)s:打印日志级别的名称
%(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s:打印当前执行程序名
%(funcName)s:打印日志的当前函数
%(lineno)d:打印日志的当前行号
%(asctime)s:打印日志的时间
%(thread)d:打印线程ID
%(threadName)s:打印线程名称
%(process)d:打印进程ID
%(message)s:打印日志信息
2. 输出到文件
通过logging.FileHandler获得文件的句柄,代码如下:
import logging
logger = logging.getLogger('logger test')
logger.setLevel(level = logging.INFO)
handler = logging.FileHandler("log.txt")
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s %(name)s %(levelname)s %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.info("Start print log")
logger.debug("Do something")
logger.warning("Something maybe fail.")
logger.info("Finish")
结果被输出到Log.txt文件中如下图所示:
logging模块还有其他的一些高级功能,这里暂时用不到,就留到下回分解了。