JAVA 中的 DEBUG 日志轮换
DEBUG log rotation in JAVA
在生产环境(例如)中,我们经常使用 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 在生产服务器上记录一个巨大的性能问题吗?
谢谢
我找到了解决办法。
我使用 cyclicBufferTracker 告诉 appender 在触发后使用最后的 x 行
我可以使用 evaluator 属性来配置触发器(默认触发器是在发生错误时)
电子邮件对我来说没问题,但如果有人想把它放在文件而不是电子邮件中,我认为你可以创建一个自定义 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>
希望对您有所帮助
在生产环境(例如)中,我们经常使用 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 在生产服务器上记录一个巨大的性能问题吗?
谢谢
我找到了解决办法。 我使用 cyclicBufferTracker 告诉 appender 在触发后使用最后的 x 行 我可以使用 evaluator 属性来配置触发器(默认触发器是在发生错误时)
电子邮件对我来说没问题,但如果有人想把它放在文件而不是电子邮件中,我认为你可以创建一个自定义 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>
希望对您有所帮助