python: 不同级别的日志输出到不同文件的日志类
2012-10-10 11:20
651 查看
#!/usr/bin/env python # -*- coding: utf-8 -*- ''' 该日志类可以把不同级别的日志输出到不同的日志文件中 ''' import os import sys import time import logging import inspect handlers = {logging.NOTSET:"/tmp/TNLOG-notset.log", logging.DEBUG:"/tmp/TNLOG-debug.log", logging.INFO:"/tmp/TNLOG-info.log", logging.WARNING:"/tmp/TNLOG-warning.log", logging.ERROR:"/tmp/TNLOG-error.log", logging.CRITICAL:"/tmp/TNLOG-critical.log"} def createHandlers(): logLevels = handlers.keys() for level in logLevels: path = os.path.abspath(handlers[level]) handlers[level] = logging.FileHandler(path) #加载模块时创建全局变量 createHandlers() class TNLog(object): def printfNow(self): return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) def __init__(self,level=logging.NOTSET): self.__loggers = {} logLevels = handlers.keys() for level in logLevels: logger = logging.getLogger(str(level)) #如果不指定level,获得的handler似乎是同一个handler? logger.addHandler(handlers[level]) logger.setLevel(level) self.__loggers.update({level:logger}) def getLogMessage(self,level,message): frame,filename,lineNo,functionName,code,unknowField = inspect.stack()[2] '''日志格式:[时间] [类型] [记录代码] 信息''' return "[%s] [%s] [%s - %s - %s] %s" %(self.printfNow(),level,filename,lineNo,functionName,message) def info(self,message): message = self.getLogMessage("info",message) self.__loggers[logging.INFO].info(message) def error(self,message): message = self.getLogMessage("error",message) self.__loggers[logging.ERROR].error(message) def warning(self,message): message = self.getLogMessage("warning",message) self.__loggers[logging.WARNING].warning(message) def debug(self,message): message = self.getLogMessage("debug",message) self.__loggers[logging.DEBUG].debug(message) def critical(self,message): message = self.getLogMessage("critical",message) self.__loggers[logging.CRITICAL].critical(message) if __name__ == "__main__": logger = TNLog() logger.debug("debug") logger = TNLog() logger.info("info") logger = TNLog() logger.warning("warning") logger = TNLog() logger.error("error") logger = TNLog() logger.critical("critical")
相关文章推荐
- 项目日志输入出不同的文件,按级别输出
- Log4J日志配置详解和自定义log4j日志级别及输出日志到不同文件实现方法
- Log4j按级别输出日志到不同的文件
- Log4j按级别输出日志到不同文件配置分析
- log4j按不同级别输出到日志文件
- 关于log4j2的重新加载,以及不同级别日志输出到不同日志文件
- Log4j按级别输出日志到不同文件配置分析
- log4j2 按照日志级别将日志输出到不同的文件
- Log4j按级别输出日志到不同文件配置分析
- 关于log4j2的重新加载,以及不同级别日志输出到不同日志文件
- Scrapy自定义日志和系统日志按级别输出到不同文件
- log4j2 按照日志级别将日志输出到不同的文件
- logback日志输出不同级别到不同文件(开发实例配置)
- Log4j按级别输出日志到不同文件
- Log4j按级别输出日志到不同文件配置分析
- 关于log4j2的重新加载,以及不同级别日志输出到不同日志文件
- Log4j按级别输出日志到不同文件配置分析
- log4j2的重新加载及不同级别日志输出到不同日志文件
- Log4j按级别输出日志到不同的文件
- log4j日志输出分级别或模块到不同文件