博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python: 不同级别的日志输出到不同文件的日志类
阅读量:6220 次
发布时间:2019-06-21

本文共 2403 字,大约阅读时间需要 8 分钟。

#!/usr/bin/env python# -*- coding: utf-8 -*-'''该日志类可以把不同级别的日志输出到不同的日志文件中'''import osimport sysimport timeimport loggingimport inspecthandlers = {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")

 

转载于:https://www.cnblogs.com/watchslowly/p/9081423.html

你可能感兴趣的文章
54、用尽量多的方法实现单例模式
查看>>
Django之jsonp跨域请求原理
查看>>
原生js
查看>>
用链表实现堆栈结构。
查看>>
[Linux学习]rmdir命令
查看>>
用js实现冒泡排序和求水仙花数
查看>>
[C++基础]036_一段关于指针的误操作代码
查看>>
solr服务器搭建
查看>>
IPayablebillItf
查看>>
《别做正常的傻瓜》的一些读书心得
查看>>
python_异常处理_断言
查看>>
.Net转Java自学之路—Mybatis框架篇二(SqlSession、原始开发、代理开发)
查看>>
JavaScript——slice和splice的区别
查看>>
url查重--bloom过滤器
查看>>
django
查看>>
vs plug
查看>>
Jquery的冒泡事件的阻止与允许
查看>>
实践是检验真理的唯一标准 - 脱壳篇02
查看>>
8.JSP与JavaBean
查看>>
strace命令详解
查看>>