logback是java中性能最优的日志框架之一,原生支持slf4j,需引入依赖、配置logback.xml/logback-spring.xml,并通过loggerfactory获取logger记录日志;spring boot支持profile条件化配置。

Logback 是 Java 中最常用、性能最好的日志框架之一,作为 Log4j 的继任者,它原生支持 SLF4J 接口,配置灵活、扩展性强。使用 Logback 的核心是引入依赖、配置文件(logback.xml 或 logback-spring.xml),再通过 SLF4J 的 API 获取 Logger 实例写日志。
添加 Logback 依赖
如果你用 Maven 构建项目,只需在 pom.xml 中加入 spring-boot-starter-logging(Spring Boot 项目默认已包含)或直接引入 Logback 经典版:
- Spring Boot 项目:无需额外添加,
spring-boot-starter系列已内置 Logback - 普通 Java 项目:添加
ch.qos.logback:logback-classic和org.slf4j:slf4j-api
编写 logback.xml 配置文件
将 logback.xml 放在 src/main/resources/ 下,可定义日志级别、输出格式、控制台与文件输出等。一个典型配置示例如下:
<configuration><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><p><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>logs/app.log</file><rollingpolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><filenamepattern>logs/app.%d{yyyy-MM-dd}.%i.log</filenamepattern><timebasedfilenamingandtriggeringpolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"><maxfilesize>10MB</maxfilesize></timebasedfilenamingandtriggeringpolicy><maxhistory>7</maxhistory></rollingpolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender></p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill3430" title="Alibabacloud Sdk Client Initialization For Java"><img
src="https://img.php.cn/upload/skill/000/000/081/178955835420587.jpg" alt="Alibabacloud Sdk Client Initialization For Java" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/skill3430" title="Alibabacloud Sdk Client Initialization For Java" class="overflowclass">Alibabacloud Sdk Client Initialization For Java</a>
<p class="overflowclass">在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。</p>
</div>
<a rel="nofollow" href="/xiazai/skill3430" title="Alibabacloud Sdk Client Initialization For Java" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div>
<p><root level="INFO"><appender-ref ref="CONSOLE"></appender-ref><appender-ref ref="FILE"></appender-ref></root></p></configuration>
说明:
– ConsoleAppender 输出到控制台;
– RollingFileAppender 按日期+大小滚动写入文件;
– %d 表示时间,%level 表示日志级别,%logger 是类名,%msg 是日志内容。
在代码中记录日志
使用 SLF4J 的 LoggerFactory 获取 Logger,不直接 new Logback 类:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
<p>public class UserService {
private static final Logger log = LoggerFactory.getLogger(UserService.class);</p><p>public void createUser(String name) {
log.info("Creating user: {}", name);
log.debug("Debug info for {}", name); // 只有 debug 级别开启时才输出
log.error("Failed to create user", new RuntimeException("Duplicate name"));
}
}</p>
关键点:
– 使用 {} 占位符 + 参数方式,比字符串拼接更高效(避免无意义的 toString() 调用);
– 异常对象应作为最后一个参数传入,Logback 会自动打印堆栈;
– 生产环境建议关闭 DEBUG 日志,避免性能损耗和日志爆炸。
Spring Boot 中的增强用法
Spring Boot 支持 logback-spring.xml,可启用 Spring Profile 条件化配置:
<springprofile name="dev"><root level="DEBUG"><appender-ref ref="CONSOLE"></appender-ref></root></springprofile><springprofile name="prod"><root level="WARN"><appender-ref ref="FILE"></appender-ref></root></springprofile>
这样开发时看到详细日志,上线后只保留警告及以上,并自动归档到文件。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










