在项目中, 日志打印是非常重要的, 帮助我们快速判断定位信息和异常
// java 自带的日志打印, 仅限于个人调试使用, 不适用于企业级项目开发
System.out.println("正常日志");
System.err.println("异常日志");
这里, 我们采用 slf4j 搭配 logback 介绍下日志打印
引入 pom.xml
依赖
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
测试日志打印
其中的语法是使用一对大括号 { }
当作后面变量的占位符, 实际打印时, 变量会按照顺序替换占位符
// 日志级别从高到低, 依次: debug, warn, info, error
// debug 级别
log.debug("debug 级别 {}", "哈哈");
// warn 级别
log.warn("warn 级别 {} {}", "测试占位符", "我的天");
// info 级别
log.info("info 级别 {} {}", 123, 666);
// error 级别
log.error("error 级别 {} {}", 123, 666);
这里着重介绍下 error 日志的打印特性
当代码发生异常时, 我们会 try
catch
, 然后打印堆栈信息
@Test
public void testLogError() {
int m = 1;
int n = 0;
try {
int i = m / n;
// 这里一定会发生异常
int i = 1 / 0;
} catch (Exception e) {
// 不推荐, 所有日志应该统一交由日志框架来做, 而不是使用 jdk 的打印 (无法记录到 error 文件中)
// e.printStackTrace();
// 一般我们可能这样打印日志, 不过这种不包含具体的业务信息, 可以尝试第 3 种打印日志的方式
// log.error(e.getMessage(), e);
// 推荐写法, 这里既包含异常堆栈信息, 又可以加入关联业务的关键信息
// 只要异常对象在最后一个参数上, 那么就会打印堆栈信息, 而且我们无需再使用大括号来引用
log.error("{} / {} 异常: {}", m, n, e.getMessage(), e);
}
}
版权声明:本文为u012745499原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。