在进行python编码过程中,处理使用print外经常用到log模块来输出记录日志信息,以下是一个log模块使用实例,实现log日志同时在控制台输出并记录到本地日志文件,同时,实现将日志记录文件按日进行记录:
#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
@author:freesigefei
Created on 2016年4月8日
'''
import logging,time
#--------------------------------------------------------------------------------------
def initlog():
'''重新定义log输出方法,实现将日志信息同时分别输出到日志文件和console控制台'''
logger = logging.getLogger()
logSavePath='D:\\log\\'
Curren_Time=time.strftime('%Y-%m-%d')
logSaveName=' Log Test.txt'
logFileObject=logSavePath+Curren_Time+logSaveName
logging.basicConfig(
level = logging.DEBUG,
format = '%(asctime)s - %(levelname)s - AutoTest:%(message)s',
filename = logFileObject, #日志文件按天增量记录到log目录
filemode = 'a')
console = logging.StreamHandler()
formatter = logging.Formatter('%(asctime)s - %(levelname)s - AutoTest:%(message)s')
console.setFormatter(formatter)
logger.addHandler(console)
console.setLevel(logging.DEBUG)
return [logger,console]
def logMsg(level,err_msg):
'''实现同时输出日志到文件及控制台,level代表的是级别,err_msg代表日志信息'''
logger,console= initlog()
if level==0:
logging.debug(err_msg)
elif level==1:
logging.info(err_msg)
elif level==2:
logging.warning(err_msg)
elif level==3:
logging.error(err_msg)
else :
logging.critical(err_msg)
logger.removeHandler(console)#清除log控制台句柄,防止日志重复输出
if __name__ == "__main__":
for i in [0,1,2,3,4]:
logMsg(i,u'日志测试')
运行测试后,控制台输出日志如下:
2016-05-04 18:19:37,094 - DEBUG - AutoTest:日志测试
2016-05-04 18:19:37,094 - INFO - AutoTest:日志测试
2016-05-04 18:19:37,094 - WARNING - AutoTest:日志测试
2016-05-04 18:19:37,094 - ERROR - AutoTest:日志测试
2016-05-04 18:19:37,094 - CRITICAL - AutoTest:日志测试
同时会在本地目录D:log下生成一个带有日期的日志文件,并记录相关日志信息。