我正在使用 slf4j+logback 来登录我们的应用程序。早些时候我们使用的是jcl+log4j,最近搬到了这里。
由于我们的应用程序中的日志记录量很大,生产环境中可能会出现磁盘已满的情况。在这种情况下,我们需要停止日志记录,应用程序应该可以正常工作。我从网上发现我们需要轮询 logback StatusManager 来查找此类错误。但这将为应用程序添加对 logback 的依赖。
对于 log4j,我发现我们可以创建一个 Appender,在这种情况下停止日志记录。这又会导致应用程序对 log4j 的依赖。
有没有办法仅使用 slf4j 配置此问题,或者是否有其他机制来处理此问题?
您无需执行任何操作或配置任何内容。 Logback 旨在很好地处理这种情况。一旦目标磁盘已满,logback 的FileAppender
将在短时间内停止写入。一旦延迟过去,它将尝试恢复。如果恢复尝试失败,等待时间会逐渐增加,最长可达 1 小时。如果恢复尝试成功,FileAppender
将再次开始记录。
该过程是完全自动的,并无缝延伸到RollingFileAppender
。也可以看看优雅的康复。 http://logback.qos.ch/reasonsToSwitch.html#grace
从更个人的角度来说,优雅的恢复是我最喜欢的 logback 功能之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)