bob*_*rti 3 logging python-2.7
我要删除此记录器。
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")
Run Code Online (Sandbox Code Playgroud)
我试着
Logger.removeHandler()和Logger.propagate我的日志功能
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
Run Code Online (Sandbox Code Playgroud)
我的错误功能
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
Run Code Online (Sandbox Code Playgroud)
在backup.py文件中,我不想执行Logger对象,但是该对象已执行。当我运行该程序并且想要停止或禁用或删除该对象时。
从您的代码看来,该Log()函数在每次调用时都在创建一个新的日志处理程序-请参阅最后几行:
fh = logging.FileHandler(filename)
fh.setLevel(logging.INFO)
logger.addHandler(fh)
^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
因此,您可能有无数的FileHandler对象,删除一个对象不会删除其他对象。我怀疑这是您的问题。
如果要删除与记录器关联的所有处理程序,则可以执行以下操作:
for handler in logger.handlers[:]:
logger.removeHandler(handler)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助。