示例一:logging模块简单使用 basicConfig
#!/usr/bin/python2.7
# -*- coding:utf-8 -*-
"""
@author: tz_zs
"""
import logging
import time
import traceback
import sys
logging.basicConfig(level=logging.DEBUG,
format='asctime: %(asctime)s \n' # 时间
'filename_line: %(filename)s_[line:%(lineno)d] \n' # 文件名_行号
'level: %(levelname)s \n' # log级别
'message: %(message)s \n', # log信息
datefmt='%a, %d %b %Y %H:%M:%S',
filename=sys.path[1] + '/output/test_try_logging.log', # sys.path[1]获取当前的工作路径
# stream=sys.stdout,
filemode='w') # 如果模式为'a',则为续写(不会抹掉之前的log)
i = 0
while i < 3:
i += 1
time.sleep(1)
try:
a = 1 / 0
except ZeroDivisionError, e:
# traceback.format_exc()为详细情况
logging.debug("%s____%s\n"
"traceback.format_exc():____%s" % (ZeroDivisionError, e, traceback.format_exc()))
continue
except BaseException, e:
logging.debug("%s____%s" % (BaseException, e))
continue
import logging
class ToolLog(object):
@staticmethod
def get_logger(filename):
m_logger = logging.getLogger("TzzsToolLog.get_logger") # Logger的名字,可以自定义,但最好是给它一个有意义的名字,方便后续的调试和维护。
m_logger.setLevel(logging.DEBUG) # 设置Logger的日志级别。这里的日志级别是DEBUG,表示Logger会记录所有级别大于等于DEBUG的日志消息。
formatter = logging.Formatter('%(asctime)s - %(filename)s:%(lineno)d - %(levelname)s - %(message)s') # 创建一个Formatter实例,设置日志信息的格式。
# 创建一个文件日志处理器并设置级别为DEBUG
file_handler = logging.FileHandler(filename)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
m_logger.addHandler(file_handler)
# 创建一个控制台日志处理器并设置级别为DEBUG
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
console_handler.setFormatter(formatter)
m_logger.addHandler(console_handler)
return m_logger