python-2.7 - python 2.7 : remove handler object or logger

标签 python-2.7 logging

我想删除这个记录器。

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() and Logger.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/

相关文章:

python - 比较 2 个不同的列表列表

python - 为什么 python 库(例如 imaplib)不使用日志记录而是使用 sys.stderr.write?

java - log4j 日志文件名?

Java.util.logger 每天新文件

python - 如何在python中传递csv文件的第一列

python-2.7 - 获取适当长度的表情符号

logging - 使用一些指标导出器 + Prometheus + Grafana 监控日志文件

linux - 合并 log4j 日志行

windows - 当 Gtk 和 win32ui 模块都导入时,Python.exe 在关闭 Gtk.main() 后继续运行

python - 忽略 Popen 的返回值是否安全?