python log模塊使用實例

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章