在生产环境中(例如)我们经常使用INFO日志级别,因为使用DEBUG日志时,大小变得非常大。
我知道SLJ4J或LOG4J可以配置日志轮换以分割文件等。 但大多数情况下,我们只在出现异常时才需要DEBUG日志,因此我们可以获得更多信息(例如HTTP请求日志)。
我想知道是否可以仅保留(例如)1分钟的DEBUG日志并在出现异常时保存它。 (主日志文件始终在级别INFO上) 例如,当发生HttpRequestException时,我们在一个特定文件夹中保存了1分钟DEBUG日志HttpRequestException-10-02-2015-10:28:50.log的文件
因此,我们可以轻松查看此文件夹中的所有异常
/Exceptions/
- HttpRequestException-10-02-2015-10:28:50.log
- NullPointerException-10-02-2015-10:29:51.log
- IOException-10-02-2015-11:29:51.log
所以...是否可以使用像slf4j这样的工具来实现? DEBUG是否在生产服务器上记录了一个巨大的性能问题?
由于
答案 0 :(得分:0)
我找到了解决方案。 我使用 cyclicBufferTracker 告诉appender在trigerred中使用最后的x行 我可以使用赋值器属性来配置触发器(默认触发器是发生错误时)
电子邮件对我来说没问题,但如果有人想把它放在文件而不是电子邮件中,我想你可以创建一个自定义的Appender而不是SMTPAppender
在此页面上:http://jira.qos.ch/browse/LOGBACK-207
以下是实际代码:(如果使用电子邮件实现,则需要javax.activation和javax.mail),如果您使用像我这样的gmail,则需要在gmail设置中允许低安全性应用:Gmail less secure apps
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>smtp.gmail.com</smtpHost>
<smtpPort>587</smtpPort>
<asynchronousSending>false</asynchronousSending>
<STARTTLS>true</STARTTLS>
<username>GoogleUsername</username>
<password>mypassword</password>
<to>GoogleUsername@gmail.com</to>
<from>GoogleUsername@gmail.com</from>
<subject>Exception Alert</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date - %message%n</pattern>
</layout>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<bufferSize>50</bufferSize>
</cyclicBufferTracker>
</appender>
希望它会有所帮助