How to handle disk full errors while logging in logback?

自作多情 提交于 2020-12-01 06:25:06

问题


I am using slf4j+logback for logging in our application. Earlier we were using jcl+log4j and moved recently.

Due to the high amount of logging in our application, there is a chance of disk being full in production environment. In such cases we need to stop logging and application should work fine. What I found from the web is that we need to poll logback StatusManager for such errors. But this will add a dependency with logback for the application. For log4j, I found that we can create an Appender which stops logging in such scenarios. That again will cause a application dependency with log4j.

Is there a way to configure this with only slf4j or is there any other mechanism to handle this?


回答1:


You do not have to do or configure anything. Logback is designed to handle this situation quite nicely. Once target disk is full, logback's FileAppender will stop writing to it for a certain short amount of time. Once that delay elapses, it will attempt to recover. If the recovery attempt fails, the waiting period is increased gradually up to a maximum of 1 hour. If the recovery attempt succeeds, FileAppender will start logging again.

The process is entirely automatic and extends seamlessly to RollingFileAppender. See also graceful recovery.

On a more personal note, graceful recovery is one my favorite logback features.




回答2:


You may try extending the slf4j.Logger class, specifically the info, debug, trace and other methods and manually query for the available space (via File.getUsableSpace() ) before every call.

That way you will not need any application dependency




回答3:


2 real options:

  • add a cron task on linux (or scheduled one on windows) to clean up your mess (incl. gzip some, if need be).
  • buy a larger hard disk and manually perform the maintenance

  • +-reduce logging

Disk full is like OOM, you can't know what fails 1st when catch it. Dealing w/ out of memory (or disk) is by preventing it. There could be a lot of cases when extra disk space could be needed and the task failed.



来源:https://stackoverflow.com/questions/6596684/how-to-handle-disk-full-errors-while-logging-in-logback

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!