mae*_*tr0 2 java performance logging logback playframework
如果使用FileAppender,禁用Logback控制台附加程序会以任何方式提高性能吗?
我将PlayFramework 2.3与Logback一起用作日志框架。我必须将应用程序日志存储在相对较慢的文件中。禁用标准控制台附加程序以提高日志记录性能是否有意义,还是过早的优化呢?即使启用了控制台记录器,记录器性能也不是我的问题。我很好奇在这种情况下是否重要。
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/application.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)
禁用此附录?
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
</encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)
您确实应该在生产环境中禁用控制台附加程序。如本博客所述:
Java日志记录会严重影响应用程序的性能。通常来说,您登录的次数越多,执行文件IO的次数就越多,这会降低应用程序的速度。
然后,您必须仔细选择在生产环境中登录的级别(最好是WARN级别)。
并且在文件追加器中也会影响您的性能,请使用本机异步回传追加器以确保不阻塞您的应用程序线程:
<configuration>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/application.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
</appender>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<appender-ref ref="FILE" />
</appender>
<root level="WARN">
<appender-ref ref="ASYNC" />
</root>
</configuration>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2929 次 |
| 最近记录: |