在進行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下生成一個帶有日期的日誌文件,並記錄相關日誌信息。