你很少给出具体的细节,所以我会给出一个可行的答案,但我不知道这是否是你想要的。
os.environ
您可以修改
singleton
功能:
import os
def singleton(myClass):
...
if myClass not in instances:
kwargs['filename'] = os.environ['logger_filename'] # may raise KeyError
instances[myClass] = myClass(*args, **kwargs)
...
@singleton
class Logger(object):
def __init__(self, filename):
self.filename = filename
...
或者另一个选项是只修改logger类:
import os
@singleton
class Logger(object):
def __init__(self):
self.filename = os.environ['logger_filename'] # may raise KeyError
使用这两个选项中的任何一个,您只需修改环境变量的值即可为记录器设置不同的目标:
import os
os.environ['logger_filename'] = 'f1.log'
b = Logger()
b.log.debug("hello there") # writes on 'f1.log'
os.environ['logger_filename'] = 'f2222.log'
c = Logger()
c.log.debug("hello there") # writes on 'f2222.log'