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下生成一个带有日期的日志文件,并记录相关日志信息。


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