我想删除这个记录器。
backup.py
try:
Logger = Log('PythonWork.backup')
Logger.info("backup task started")
Logger.disabled=True
except Exception as e:
errlogger = Error('PythonWork.backup')
errlogger.error("Error: Error found back up service,failed.")
Logger.error("backup task started")
I tried
Logger.removeHandler()
andLogger.propagate
my log function
def Log(LOG_NAME):
logger = logging.getLogger(LOG_NAME)
logger.setLevel(logging.DEBUG)
filename=python.log
fh = logging.FileHandler(filename)
fh.setLevel(logging.INFO)
logger.addHandler(fh)
return logger
my Error function
def Error(LOG_NAME):
logger = logging.getLogger(LOG_NAME)
logger.setLevel(logging.DEBUG)
fileNameError=python.log
fhError = logging.FileHandler(fileNameError)
fhError.setLevel(logging.ERROR)
logger.addHandler(fhError)
return logger
在 backup.py 文件中,我不想执行 Logger 对象,但它已被执行。当我运行这个程序并且我想停止或禁用或删除该对象时。
最佳答案
从您的代码看来,Log()
函数正在创建一个新的日志处理程序
在每次通话时 - 请参阅最后几行:
fh = logging.FileHandler(filename)
fh.setLevel(logging.INFO)
logger.addHandler(fh)
^^^^^^^^^^^^^^^^^^^^^
所以,你可能有无数的
FileHandler
对象,删除一个不会删除其他的。我怀疑这是你的问题。如果您想删除 全部 与记录器关联的处理程序,您可以执行以下操作:
for handler in logger.handlers[:]:
logger.removeHandler(handler)
希望这可以帮助。
关于python-2.7 - python 2.7 : remove handler object or logger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41443336/