Java-日志框架:SLF4J、Logback、Log4j
日志框架可以控制记录日志级别、日志格式和输出到文件,方便查找异常信息、分析系统运行情况;
日志框架一般由日志接口和日志实现组成。
|
日志接口 核心是记录日志,自动查找日志实现来处理日志 |
日志实现 主要作用是处理日志(设置输出级别、样式、位置等) |
| SLF4J(最主流) |
Logback、Log4j2、java.util.logging 1、代码只依赖 SLF4J 的 API,不关心底层日志的实现 2、可以随时更换底层实现(如从Logback 换到 Log4j2),而无需修改业务代码 |
最推荐组合:SLF4J + Logback;
历史组合 Commons Logging + Log4j 1.x 已逐渐被淘汰,新项目不建议使用。
<dependencies> <!-- SLF4J API(门面) --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>2.0.9</version> </dependency> <!-- Logback 实现(包含 SLF4J 绑定) --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.4.11</version> </dependency> </dependencies>
1、 Logback配置文件:logback.xml
logback.xml存放位置:放在 src/main/resources 或 src/test/resources
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 1. 定义输出格式 --> <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" /> <!-- 2. 控制台输出 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <!-- 3. 文件输出(可选) --> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>logs/myapp.log</file> <encoder> <pattern>${LOG_PATTERN}</pattern> </encoder> </appender> <!-- 4. 设置全局日志级别 --> <root level="INFO"> <appender-ref ref="CONSOLE" /> <!-- <appender-ref ref="FILE" /> --> </root> <!-- 5. <logger>标签用于为指定的包或类单独设置日志级别,优先级高于 <root>的全局设置。 --> <logger name="com.example.myproject" level="DEBUG" /> </configuration>
2、SLF4J:在代码中使用slf4j.Logger记录日志
import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyTestClass { // 获取 Logger 实例(通常用当前类名) private static final Logger logger = LoggerFactory.getLogger(MyTestClass.class); public void doSomething() { // 不同级别的日志 logger.error("这是错误信息,级别最高"); logger.warn("这是警告信息"); logger.info("这是普通信息,默认级别"); // 常用 logger.debug("这是调试信息,开发时用"); // 常用 logger.trace("这是追踪信息,级别最低"); // 支持占位符,避免字符串拼接开销 String username = "admin"; logger.info("用户 {} 登录成功", username); } }
3、日志级别对比与使用建议
| 级别 | 用途 | 你在测试中最常用的场景 |
|---|---|---|
| ERROR | 系统错误、异常 | 捕获异常时记录 logger.error("...", e) |
| WARN | 警告信息,不影响运行 | 配置问题、降级处理 |
| INFO | 默认级别,关键业务流程 | 测试开始/结束、关键步骤、重要状态变化 |
| DEBUG | 调试信息,开发时使用 | 查看详细数据、变量值(本地调试时最常改为此级别) |
| TRACE | 最详细追踪信息 | 极端情况下的详细跟踪(很少用) |
在测试中的实用技巧:
1、在测试方法中用 logger.debug() 输出请求参数、响应数据
2、mvn test 运行时不输出DEBUG信息(默认logback.xml 中配置的 <root level="INFO">)
3、测试用例失败或需要查看详细数据时,可以在 logback.xml 中将 root 或特定包的级别改为 DEBUG
4、再次执行 mvn test,logger.debug() 信息就会输出。
本文来自博客园,作者:Fēngwèi,转载请注明原文链接:https://www.cnblogs.com/fengwei-blogs/p/22516737

浙公网安备 33010602011771号