python log 系统

Posted on Posted in python
Tips: 本文创建于2016年7月21日,已超过 2 年,内容或图片可能已经失效!

> code

  1. #!/usr/bin/env python  
  2. # -*- coding:utf-8 -*-  
  3. import logging  
  4.   
  5. def singleton(cls):  
  6.     instances = {}  
  7.     def _singleton(*args, **kw):  
  8.         if cls not in instances:  
  9.             instances[cls] = cls(*args, **kw)  
  10.         return instances[cls]  
  11.     return _singleton  
  12.       
  13. @singleton  
  14. class FinalLogger(object):  
  15.     """第一个参数为日志文件名,第二个参数为logger名,随意"""  
  16.     def __init__(self, logname, loggername="mylogger"):  
  17.         self._levels = {"n":logging.NOTSET,  
  18.                 "d":logging.DEBUG,  
  19.                 "i":logging.INFO,  
  20.                 "w":logging.WARN,  
  21.                 "e":logging.ERROR,  
  22.                 "c":logging.CRITICAL}  
  23.         self._logname = logname  
  24.         self._loggername = loggername  
  25.         self._defaultlevel = self._levels["d"]  
  26.         # 创建一个logger  
  27.         self._logger = logging.getLogger(self._loggername)  
  28.         # 级别为debug  
  29.         self._logger.setLevel(self._defaultlevel)  
  30.         # 创建一个handler,输出到文件  
  31.         filehandler = logging.FileHandler(self._logname)  
  32.         filehandler.setLevel(self._defaultlevel)  
  33.         # 创建一个handle,输出到控制台  
  34.         consolehandler = logging.StreamHandler()  
  35.         consolehandler.setLevel(self._defaultlevel)  
  36.         #定义格式  
  37.         logformat = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  
  38.         filehandler.setFormatter(logformat)  
  39.         consolehandler.setFormatter(logformat)  
  40.         #给logger添加handler  
  41.         self._logger.addHandler(filehandler)  
  42.         self._logger.addHandler(consolehandler)  
  43.     def getlogger(self):  
  44.         return self._logger  
  45.   
  46. logger = FinalLogger("log.txt").getlogger()  
  47. logger.debug("the content")  
» 转载请注明来源:若我若鱼 » python log 系统

Leave a Reply

Your email address will not be published. Required fields are marked *

thirteen + 2 =