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

本文共 2419 字,大约阅读时间需要 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/code-style/archive/2012/10/10/2718002.html

你可能感兴趣的文章
Linux必会原理之文件删除的原理
查看>>
Rsync介绍及配置
查看>>
编程的那些事儿
查看>>
应用于ASP文件上传漏洞的0×00截断***
查看>>
Rubygems的国内镜像站点
查看>>
TypeScript基础入门之模块解析(三)
查看>>
Maven学习八之pom.xml简介以及客户端下载包的流程
查看>>
redis集群搭建
查看>>
Android内存分析和调优
查看>>
和Linux大魔王愉快的玩耍(一)环境变量和文件类型
查看>>
RIP报文更新验证实验
查看>>
如何在创业团队中获取最大的幸福感
查看>>
为什么Runtime.exec("ls")没有任何输出_JAVA基础教程
查看>>
我的友情链接
查看>>
Docker数据管理及网络通信
查看>>
oracle 中的INTERVAL 函数详解
查看>>
SAP中成本分配的相关操作KSV1/KSV2/KSV3/KSV5
查看>>
varnish
查看>>
MySQL基本查询语句
查看>>
linux学习-centos7上部署DNS服务
查看>>