java 中 log 日志打印

在项目中, 日志打印是非常重要的, 帮助我们快速判断定位信息和异常

// 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);
        }
    }

log.error

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值