使用方法如下(可定义多个python logger):
import logging
class Log(object):
def __init__(self, name=__name__, path='mylog.log', level='DEBUG'):
self.__name = name
self.__path = path
self.__level = level
self.__logger = logging.getLogger(self.__name)
self.__logger.setLevel(self.__level)
def __ini_handler(self):
"""初始化handler"""
stream_handler = logging.StreamHandler()
file_handler = logging.FileHandler(self.__path, encoding='utf-8')
return stream_handler, file_handler
def __set_handler(self, stream_handler, file_handler, level='DEBUG'):
"""设置handler级别并添加到logger收集器"""
stream_handler.setLevel(level)
file_handler.setLevel(level)
self.__logger.addHandler(stream_handler)
self.__logger.addHandler(file_handler)
def __set_formatter(self, stream_handler, file_handler):
"""设置日志输出格式"""
# formatter = logging.Formatter('%(asctime)s-%(name)s-%(filename)s-[line:%(lineno)d]'
# '-%(levelname)s-[日志信息]: %(message)s',
# datefmt='%a, %d %b %Y %H:%M:%S')
formatter = logging.Formatter('时间:%(asctime)s,'
'日志级别:%(levelname)s,'
'日志错误行:%(lineno)d,'
'调用错误的函数:%(funcName)s'
'日志内容:%(message)s,'
)
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
def __close_handler(self, stream_handler, file_handler):
"""关闭handler"""
stream_handler.close()
file_handler.close()
@property
def Logger(self):
"""构造收集器,返回looger"""
stream_handler, file_handler = self.__ini_handler()
self.__set_handler(stream_handler, file_handler)
self.__set_formatter(stream_handler, file_handler)
self.__close_handler(stream_handler, file_handler)
return self.__logger
if __name__ == '__main__':
pass
# log = Log('loged', log_path)
# # loged = log.Logger
# # log2 = Log('printlog', print_log_path)
# # print_log = log2.Logger
