如果禁用了记录器,则防止创建空的日志文件

萨尔布吉特

我正在使用日志记录模块使用以下代码在单独的日志文件中写入错误和调试消息。但是我希望仅在设置了特定环境变量的情况下才进行日志记录。在下面的代码中,我通过设置来关闭日志记录logger.disabled=True但是,我观察到,当我的应用程序完成执行时,将显示空的日志文件。我在设置logger.disabled=True语句之后添加了一个删除这些文件的检查,但是它说该文件不存在。这些文件何时生成-在脚本执行结束时,即使禁用了记录器,也可以防止写入空文件吗?

class LevelFilter(logging.Filter):
    def __init__(self, level):
        self.level = level
    def filter(self, record):
        return record.levelno == self.level

logger = logging.getLogger("exceptionsLogger")
debugLogFileHandler = logging.FileHandler("Debug.log", mode='w')
errorLogFileHandler = logging.FileHandler("Error.Log", mode='w')
formatter = logging.Formatter('%(message)s')
errorLogFileHandler.setFormatter(formatter)
debugLogFileHandler.setFormatter(formatter)
logger.addHandler(debugLogFileHandler)
logger.addHandler(errorLogFileHandler)
debugLogFileHandler.addFilter(LevelFilter(logging.DEBUG))
errorLogFileHandler.addFilter(LevelFilter(logging.ERROR))

logger.setLevel(logging.DEBUG)
logger.disabled = True
过氧化物

参见logging/__init__.pyPython标准库。有类FileHandler有方法__init__()

FileHandler.__init__具有参数delay,该参数使处理程序将实际的创建延迟StreamHandler到发出第一条消息之前。您不使用此参数,并且open()在实例化FileHandler实例时以模式“ w”调用它在将logger.disabled设置为True之前,请先执行此操作。

因此,如果以后不发出消息,则您仍然已经打开了空文件。

为避免这种情况,请创建带有参数延迟的文件处理程序,在其中传递True或实例化,然后仅在需要时才分配处理程序。logger.disabled不会帮助您避免创建文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用root记录器禁用导入模块的日志

来自分类Dev

在使用时间轮转记录器创建的每个日志文件中写入标头

来自分类Dev

创建以日志消息为前缀的记录器

来自分类Dev

不追加但覆盖记录器的日志文件

来自分类Dev

从记录器检索输出日志文件值

来自分类Dev

不追加但覆盖记录器的日志文件

来自分类Dev

Serilog:防止创建空日志文件

来自分类Dev

如何防止模块级日志记录功能破坏记录器?

来自分类Dev

Java日志记录全局记录器

来自分类Dev

Java日志记录全局记录器

来自分类Dev

python中的记录器模块不会创建多个文件

来自分类Dev

如何防止log4j日志重定向到root记录器

来自分类Dev

Winston javascript记录器正在创建两个单独的日志文件。如何将所有条目记录到单个文件中?

来自分类Dev

如何创建2个不同的带有日志记录的ROOT记录器?

来自分类Dev

为什么非root记录器不向日志文件写入任何日志?

来自分类Dev

NLog记录器未记录到发布版本中已配置的日志文件

来自分类Dev

如何禁用弹簧记录器?

来自分类Dev

Python默认记录器已禁用

来自分类Dev

禁用根记录器的输出

来自分类Dev

如何完全禁用记录器

来自分类Dev

Python 记录器:限制日志文件似乎不限制我的文件

来自分类Dev

快照错误:main.go:220:警告:无法创建系统日志记录器

来自分类Dev

Elasticsearch 5.5 - 使用自定义日志目录时出错:无法在 '' 创建记录器

来自分类Dev

Log :: Log4Perl屏幕记录器在创建文件记录器后停止工作

来自分类Dev

记录器配置以记录到文件

来自分类Dev

Python:多个记录器将日志写入相似的文件

来自分类Dev

Nodejs Winston记录器-日志输出到控制台和文件

来自分类Dev

迭代中的空记录器

来自分类Dev

带重新加载重复日志记录的记录器

Related 相关文章

  1. 1

    使用root记录器禁用导入模块的日志

  2. 2

    在使用时间轮转记录器创建的每个日志文件中写入标头

  3. 3

    创建以日志消息为前缀的记录器

  4. 4

    不追加但覆盖记录器的日志文件

  5. 5

    从记录器检索输出日志文件值

  6. 6

    不追加但覆盖记录器的日志文件

  7. 7

    Serilog:防止创建空日志文件

  8. 8

    如何防止模块级日志记录功能破坏记录器?

  9. 9

    Java日志记录全局记录器

  10. 10

    Java日志记录全局记录器

  11. 11

    python中的记录器模块不会创建多个文件

  12. 12

    如何防止log4j日志重定向到root记录器

  13. 13

    Winston javascript记录器正在创建两个单独的日志文件。如何将所有条目记录到单个文件中?

  14. 14

    如何创建2个不同的带有日志记录的ROOT记录器?

  15. 15

    为什么非root记录器不向日志文件写入任何日志?

  16. 16

    NLog记录器未记录到发布版本中已配置的日志文件

  17. 17

    如何禁用弹簧记录器?

  18. 18

    Python默认记录器已禁用

  19. 19

    禁用根记录器的输出

  20. 20

    如何完全禁用记录器

  21. 21

    Python 记录器:限制日志文件似乎不限制我的文件

  22. 22

    快照错误:main.go:220:警告:无法创建系统日志记录器

  23. 23

    Elasticsearch 5.5 - 使用自定义日志目录时出错:无法在 '' 创建记录器

  24. 24

    Log :: Log4Perl屏幕记录器在创建文件记录器后停止工作

  25. 25

    记录器配置以记录到文件

  26. 26

    Python:多个记录器将日志写入相似的文件

  27. 27

    Nodejs Winston记录器-日志输出到控制台和文件

  28. 28

    迭代中的空记录器

  29. 29

    带重新加载重复日志记录的记录器

热门标签

归档