在 Spring Boot 里,日志配置是一项重要的工作,而且 Spring Boot 对多种日志框架都提供了支持。下面为你详细介绍日志配置方法以及可用的日志框架。

可用的日志框架

Spring Boot 默认使用 Logback 作为日志框架,不过它也支持其他常见的日志框架,像 Log4j2、Java Util Logging 等。以下是几种常见日志框架的简要介绍:

  • Logback:它是 Log4j 的继任者,具备高性能、灵活的配置和丰富的特性。Spring Boot 默认采用 Logback 作为日志框架。
  • Log4j2:这是 Apache 开发的一款功能强大的日志框架,支持异步日志、插件化等特性。
  • Java Util Logging:这是 Java 自带的日志框架,使用简单,但功能相对较少。

日志配置方法

1. 使用默认的 Logback 配置

Spring Boot 默认会自动配置 Logback,你只需在 application.properties 或者 application.yml 中进行简单配置即可。

application.properties 示例

# 设置日志级别
logging.level.root=INFO
# 指定日志文件路径
logging.file.name=myapp.log

application.yml 示例

logging:
  level:
    root: INFO
  file:
    name: myapp.log

2. 自定义 Logback 配置

如果你需要更复杂的配置,可以在 src/main/resources 目录下创建 logback.xml 文件。以下是一个简单的 logback.xml 示例:

<configuration>
    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 文件输出 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>myapp.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>myapp.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 设置日志级别 -->
    <root level="info">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE" />
    </root>
</configuration>

3. 使用 Log4j2 作为日志框架

若要使用 Log4j2,需在 pom.xml 中排除默认的 Logback 依赖,并添加 Log4j2 依赖:

<dependencies>
    <!-- 排除默认的 Logback 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- 添加 Log4j2 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
</dependencies>

接着在 src/main/resources 目录下创建 log4j2.xml 文件进行配置:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </Console>
        <File name="File" fileName="myapp.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="File"/>
        </Root>
    </Loggers>
</Configuration>

通过以上方法,你可以在 Spring Boot 中灵活地配置日志。