実装のようなロギングモジュールを書くことを検討しましたか?次のようなもの
別のLoggerクラスを作成します。ロガーオブジェクトが必要な場合は、Logger.get_logger(your_class_name)を呼び出します。このメソッドは、新しいロガーを作成して返すか、その特定のロガー名に対して作成済みのロガーを返します。次に、このロガーを使用します。
そうすれば、必要なときにいつでも独自のロガーを標準のロガーに変更できます。そして、開発者はあなたが使用している方法に精通しているでしょう。
logger = Logger.get_logger(Deployer.__class__.__name__)
logger.info("Starting deployment")
これは非常に単純なロガーの実装です。
"""
Sample logger implementation
"""
import datetime
class Logger:
"""
Main logger class
"""
_cached_loggers = dict()
def __init__(self, logger_name):
self.name = logger_name
self._cached_loggers[logger_name] = self
@classmethod
def get_logger(cls, logger_name):
"""
Return a new logger or already existed one
"""
if logger_name in cls._cached_loggers:
logger = cls._cached_loggers[logger_name]
else:
logger = Logger(logger_name)
return logger
def info(self, msg):
"""
logging info logs
"""
print u"{0} - {1} - {2}".format(self.name,
datetime.datetime.now(),
unicode(msg))