如果我仍然登录文件,禁用Logback控制台附加程序会提高性能吗?

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)

Fra*_*rel 5

您确实应该在生产环境中禁用控制台附加程序。如本博客所述

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)