本文目录导读:

- Logback(Spring Boot默认)
- Log4j2
- Java Util Logging (JUL)
- 程序化配置(Logback示例)
- Spring Boot 动态修改日志级别(运行时)
- 日志级别详解
- 配置建议
在Java中配置日志级别有多种方式,具体取决于你使用的日志框架,以下是几种主流日志框架的配置方法:
Logback(Spring Boot默认)
logback.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 全局日志级别 -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
<!-- 特定包/类的日志级别 -->
<logger name="com.example.controller" level="DEBUG"/>
<logger name="com.example.service" level="WARN"/>
<logger name="com.example.dao" level="ERROR"/>
<!-- 控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
</configuration>
application.yml 配置(Spring Boot)
logging:
level:
root: INFO
com.example.controller: DEBUG
com.example.service: WARN
com.example.dao: ERROR
Log4j2
log4j2.xml 配置
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<!-- 全局日志级别 -->
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
<!-- 特定包/类的日志级别 -->
<Logger name="com.example.controller" level="DEBUG" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<Logger name="com.example.service" level="WARN"/>
<Logger name="com.example.dao" level="ERROR"/>
</Loggers>
</Configuration>
Java Util Logging (JUL)
logging.properties
# 全局日志级别 .level=INFO # 特定包/类的日志级别 com.example.controller.level=FINE com.example.service.level=WARNING com.example.dao.level=SEVERE # 处理器配置 handlers=java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level=ALL java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
程序化配置(Logback示例)
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import org.slf4j.LoggerFactory;
public class LogConfigExample {
public static void main(String[] args) {
// 获取根日志记录器
Logger rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
rootLogger.setLevel(Level.INFO);
// 设置特定类的日志级别
Logger controllerLogger = (Logger) LoggerFactory.getLogger("com.example.controller");
controllerLogger.setLevel(Level.DEBUG);
// 动态调整日志级别
Logger serviceLogger = (Logger) LoggerFactory.getLogger("com.example.service");
serviceLogger.setLevel(Level.WARN);
}
}
Spring Boot 动态修改日志级别(运行时)
import org.springframework.boot.logging.LogLevel;
import org.springframework.boot.logging.LoggingSystem;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/logs")
public class LogLevelController {
@Autowired
private LoggingSystem loggingSystem;
@PostMapping("/level")
public String setLogLevel(@RequestParam String packageName,
@RequestParam String level) {
loggingSystem.setLogLevel(packageName, LogLevel.valueOf(level.toUpperCase()));
return "Log level for " + packageName + " set to " + level;
}
}
日志级别详解
Logback/Log4j2 日志级别(从低到高)
| 级别 | 说明 |
|---|---|
| TRACE | 最详细的调试信息 |
| DEBUG | 调试信息 |
| INFO | 一般信息 |
| WARN | 警告信息 |
| ERROR | 错误信息 |
JUL 日志级别
| 级别 | 说明 |
|---|---|
| FINEST | 最详细 |
| FINER | 较详细 |
| FINE | 详细 |
| CONFIG | 配置信息 |
| INFO | 一般信息 |
| WARNING | 警告 |
| SEVERE | 严重 |
配置建议
- 开发环境:建议使用
DEBUG级别,以便获取更多调试信息 - 测试环境:建议使用
INFO或DEBUG级别 - 生产环境:建议使用
INFO或WARN级别,避免过多日志影响性能 - 关键业务:可以对特定包或类单独设置更低的日志级别
选择哪种方式取决于你的项目需求和使用的框架,Spring Boot项目推荐使用application.yml配置,传统项目可以使用XML配置文件。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播