3231212 发表于 2016-1-8 09:19:58

python logging 单例模式范例

#logger.py
#author: Zilu.Tang
#date: 20160107
import logging
import os


class SingleLogger(object):
    __instance = None

    def __init__(self):
      pass

    def __new__(cls, *args, **kwd):
      if SingleLogger.__instance is None:
            SingleLogger.__instance = object.__new__(cls, *args, **kwd)
            SingleLogger.__instance.__logger = logging.getLogger("logger1")
            SingleLogger.__instance.__logger.setLevel(logging.DEBUG)
            formatter = logging.Formatter('%(name)-12s %(asctime)s %(levelname)-8s %(message)s', '%a, %d %b %Y %H:%M:%S',)
            file_handler = logging.FileHandler(r"test.log")
            file_handler.setLevel(logging.INFO)
            stream_handler = logging.StreamHandler()
            file_handler.setFormatter(formatter)
            SingleLogger.__instance.__logger.addHandler(file_handler)
            SingleLogger.__instance.__logger.addHandler(stream_handler)
            SingleLogger.__instance.__logger.info("log info: " + os.getcwd())
      return SingleLogger.__instance

    def info(self, message):
      SingleLogger.__instance.__logger.info(message)



Usage:

1
2
3
4
5
6
7
from logger import SingleLogger
class Usage():
    def __init__(self):
      self.__logger = SingleLogger()
   
    def test(self):
      self.__logger.info("Test logger")



页: [1]
查看完整版本: python logging 单例模式范例