Java 如果我仍然登录到文件,禁用Logback console appender会提高性能吗?

Java 如果我仍然登录到文件,禁用Logback console appender会提高性能吗?,java,performance,logging,playframework,logback,Java,Performance,Logging,Playframework,Logback,如果我使用FileAppender,禁用Logback控制台appender会以任何方式提高性能吗 我使用带有Logback的playframework2.3作为日志框架。 我必须将应用程序日志存储在相对较慢的文件中禁用标准控制台附加程序以提高日志记录性能有意义吗?或者这是一种过早的优化吗?即使启用了控制台日志记录程序,日志记录程序性能对我来说也不是问题。我只是好奇这件事是否重要 <appender name="FILE" class="ch.qos.logback.core.FileAp

如果我使用FileAppender,禁用Logback控制台appender会以任何方式提高性能吗

我使用带有Logback的playframework2.3作为日志框架。 我必须将应用程序日志存储在相对较慢的文件中禁用标准控制台附加程序以提高日志记录性能有意义吗?或者这是一种过早的优化吗?即使启用了控制台日志记录程序,日志记录程序性能对我来说也不是问题。我只是好奇这件事是否重要

<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>

${application.home}/logs/application.log
%日期-[%level]-来自%logger,位于%thread%n%消息%n%xException%n
禁用此附加器

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
    </encoder>
</appender>

%coloredLevel%logger{15}-%message%n%xException{5}

这肯定会提高性能,但“多少”只对您而言是可测量的。另一点是,您不应该在更高的环境中登录console,这对于
DEV
,是可以的,但一旦您在不同的环境中登录,这就没有多大意义,因为您可以在同一服务器中部署多个应用程序,您将被淹没。在这种情况下,登录到文件是有意义的,这是推荐的方法


希望这有帮助。

您确实应该在生产环境中禁用console appender。 如本文所述:

Java日志严重影响应用程序的性能。通常情况下,您记录的日志越多,执行的文件IO越多,这会降低应用程序的速度

然后,您必须仔细选择在生产环境中登录的级别(首选警告级别)

在文件appender也会影响性能的情况下,请使用本机以确保不会阻止应用程序线程:

<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>

${application.home}/logs/application.log
%日期-[%level]-来自%logger,位于%thread%n%消息%n%xException%n