本文目录导读:

- 使用 application.yml/properties 配置(基础方式)
- 使用 logback-spring.xml(更强大的配置方式)
- 多环境配置(开发/生产)
- 在代码中使用日志
- 使用 Lombok 简化日志
- 配置说明
在Java Boot(Spring Boot)应用中配置日志输出,主要有以下几种常见方式:
使用 application.yml/properties 配置(基础方式)
application.yml 配置示例:
logging:
level:
root: INFO
com.example: DEBUG
org.springframework.web: ERROR
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file:
name: logs/application.log
path: logs/
max-size: 10MB
max-history: 30
charset:
console: UTF-8
file: UTF-8
application.properties 配置示例:
logging.level.root=INFO
logging.level.com.example=DEBUG
logging.level.org.springframework.web=ERROR
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
logging.file.name=logs/application.log
logging.file.path=logs/
logging.file.max-size=10MB
logging.file.max-history=30
logging.charset.console=UTF-8
logging.charset.file=UTF-8
使用 logback-spring.xml(更强大的配置方式)
在 src/main/resources 下创建 logback-spring.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 定义变量 -->
<property name="LOG_PATH" value="./logs"/>
<property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 文件输出 - 按天滚动 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/application.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/application-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- 错误日志单独输出 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_PATH}/error-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
<totalSizeCap>500MB</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>${LOG_PATTERN}</pattern>
<charset>UTF-8</charset>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 异步输出,提升性能 -->
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
<discardingThreshold>0</discardingThreshold>
<queueSize>256</queueSize>
<appender-ref ref="FILE"/>
</appender>
<!-- 设置日志级别 -->
<logger name="com.example" level="DEBUG" additivity="false">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ASYNC"/>
<appender-ref ref="ERROR_FILE"/>
</logger>
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="ASYNC"/>
<appender-ref ref="ERROR_FILE"/>
</root>
</configuration>
多环境配置(开发/生产)
application-dev.yml
logging:
level:
root: DEBUG
pattern:
console: "%clr(%d{yyyy-MM-dd HH:mm:ss}){cyan} %clr([%thread]){yellow} %clr(%-5level){magenta} %clr(%logger{36}){blue} - %msg%n"
application-prod.yml
logging:
level:
root: WARN
com.example: INFO
file:
name: /var/log/application.log
max-size: 50MB
max-history: 90
在代码中使用日志
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
@Service
public class UserService {
private static final Logger logger = LoggerFactory.getLogger(UserService.class);
public void getUser(Long id) {
logger.debug("查询用户信息,ID: {}", id);
try {
// 业务逻辑
logger.info("用户查询成功,ID: {}", id);
} catch (Exception e) {
logger.error("用户查询失败,ID: {}", id, e);
}
}
}
使用 Lombok 简化日志
添加 Lombok 依赖后:
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
public class UserService {
public void getUser(Long id) {
log.debug("查询用户信息,ID: {}", id);
log.info("用户查询成功,ID: {}", id);
log.error("用户查询失败,ID: {}", id, exception);
}
}
配置说明
| 配置项 | 说明 | 推荐值 |
|---|---|---|
| logging.level | 设置日志级别 | 开发用DEBUG,生产用INFO |
| logging.pattern | 日志输出格式 | 包含时间、线程、级别、类名、消息 |
| logging.file | 日志文件配置 | 设置文件名、路径、大小、保留天数 |
| 控制台输出 | 开发环境方便调试 | 带颜色格式 |
| 文件输出 | 生产环境记录 | 按天滚动,自动清理 |
选择哪种方式取决于你的项目需求,简单的项目用 application.yml 就够了,复杂的项目推荐使用 logback-spring.xml。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播