天天看点

每日分享- Java 日志组件 Logback 怎么用?

作者:理工男二号

Logback 是一款功能强大、易于配置和使用的 Java 日志组件,常见的用法包括:

1 使用 Logback 进行基本的日志输出

以下是一个简单的 Logback 配置文件示例:

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <root level="INFO">
        <appender-ref ref="STDOUT" />
    </root>
</configuration>           

上面的配置文件定义了一个名为“STDOUT”的输出目标,将日志信息输出到控制台中,并使用了自定义的日志格式。然后将日志级别设置为 INFO,表示只输出 INFO 级别及以上的日志信息。

优点:简单易用,可以方便地进行日志输出。

缺点:无法对日志信息进行过滤和归档等操作。

2 使用 Logback 进行日志记录

以下是一个示例:

Logger logger = LoggerFactory.getLogger(MyClass.class);
logger.info("Hello, Logback!");           

上面的代码中,使用 'LoggerFactory.getLogger()' 方法获取一个 Logger 对象,然后调用 'logger.info()' 方法输出日志信息。

优点:简单易用,可以方便地进行日志记录。

缺点:需要手动编写输出目标的配置文件。

3 使用 Logback 进行日志过滤

以下是一个示例:

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/myapp.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
        </filter>
    </appender>
 
    <root level="INFO">
        <appender-ref ref="FILE" />
    </root>
</configuration>           

上面的配置文件定义了一个名为“FILE”的文件输出目标,并使用了 LevelFilter 过滤器,只输出日志级别为 ERROR 的日志信息。

优点:可以方便地对日志进行过滤,只输出符合特定条件的日志信息。

缺点:需要手动编写 Logback 配置文件,并且过滤器的配置可能会增加配置文件的复杂性。

4 使用 Logback 进行日志归档

Logback 可以方便地将日志信息归档到不同的文件中,以便后续分析和处理。以下是一个示例:

<configuration>
    <appender name="ARCHIVE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/test.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
 
    <root level="INFO">
        <appender-ref ref="ARCHIVE" />
    </root>
</configuration>           

上面的配置文件定义了一个名为“ARCHIVE”的归档输出目标,并使用了 RollingFileAppender 和 TimeBasedRollingPolicy 组件,将日志信息归档到按日期命名的文件中。此外,配置文件还使用了自定义的日志格式,并将日志级别设置为 INFO。

优点:可以方便地对日志信息进行归档和管理,便于后续的分析和处理。

缺点:需要手动编写 Logback 配置文件,并且归档配置可能会增加配置文件的复杂性。

5 使用 Logback 进行日志异步输出

以下是一个示例:

<configuration>
    <appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="FILE" />
        <discardingThreshold>0</discardingThreshold>
        <queueSize>512</queueSize>
    </appender>
 
    <root level="INFO">
        <appender-ref ref="ASYNC_FILE" />
    </root>
</configuration>           

上面的配置文件定义了一个名为“ASYNC_FILE”的异步输出目标,并使用了 AsyncAppender 组件,将日志信息异步输出到文件中。此外,还配置了最大队列大小和丢弃阈值等参数。

优点:可以提高日志输出的性能和效率,避免阻塞应用程序的主线程。

缺点:需要了解异步输出的原理和机制,并且需要适当地调整异步输出的参数,才能发挥最大的性能优势。

总的来说,Logback 是一款非常强大和灵活的 Java 日志组件,可以满足不同的日志输出和管理需求。在使用 Logback 时,需要根据实际情况选择合适的用法,并根据具体需求进行适当的配置和调整,才能发挥最大的优势。

继续阅读