改进的日志类
代码:
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' 改进的日志类: 1. 使用format对象,就不用自己采集环境信息,库可以采集信息 2. 将多个handler绑定到一个logger上,且每个handler设置相应级别 日志会产生多份,每个handler只记录自己的级别和含高于自己级别的日志 ''' import os import sys import time import logging handlers = {logging.NOTSET:"/tmp/TNLOG-notset.log", logging.INFO:"/tmp/TNLOG-info.log", logging.DEBUG:"/tmp/TNLOG-debug.log", logging.WARNING:"/tmp/TNLOG-warning.log", logging.ERROR:"/tmp/TNLOG-error.log", logging.CRITICAL:"/tmp/TNLOG-critical.log"} def createHandlers(): logLevels = handlers.keys() '''日志格式:[时间] [类型] [记录代码] 信息''' fmt = '[%(asctime)s] [%(levelname)s] [ %(filename)s:%(lineno)s - %(name)s ] %(message)s ' formatter = logging.Formatter(fmt) for level in logLevels: path = os.path.abspath(handlers[level]) print path handlers[level] = logging.FileHandler(path) handlers[level].setLevel(level) handlers[level].setFormatter(formatter) #加载模块时创建全局变量 createHandlers() class TNLog(object): '''TNLog.constant''' NOTSET = logging.NOTSET INFO = logging.INFO DEBUG = logging.DEBUG WARNING = logging.WARNING ERROR = logging.ERROR CRITICAL = logging.CRITICAL
def __init__(self,setLevel=logging.NOTSET): self.__loggers = logging.getLogger() logLevels = handlers.keys() for level in logLevels: self.__loggers.addHandler(handlers[level]) #将多个handler绑到一个logger上 self.__loggers.setLevel(setLevel) def info(self,message): self.__loggers.info(message) def error(self,message): self.__loggers.error(message) def warning(self,message): self.__loggers.warning(message) def debug(self,message): self.__loggers.debug(message) def critical(self,message): self.__loggers.critical(message) if __name__ == "__main__": logger = TNLog(TNLog.NOTSET) logger.debug("debug") logger = TNLog(TNLog.DEBUG) logger.info("info") logger = TNLog() logger.warning("warning") logger = TNLog() logger.error("error") logger = TNLog() logger.critical("critical")
浙公网安备 33010602011771号