Logback-简介

微信扫一扫,分享到朋友圈

Logback-简介

背景

从毕业到现在参加工作已经有两年了,在这两年期间,经历的几个大项目和一些小项目,每个项目都涉及到日志这个模块。存在的意义无非就是两个:

  1. 记录业务日志,方便后期排查问题
  2. 以日志上的形式记录业务数据,并将日志文件推送第三方

每次接手一个新项目,就会先问有没有配置日志,如果没有配置日志模块,那么排查问题就是一个很恼火的问题,不清楚请求参数是什么,走了哪个判断,调用第三方接口的参数和返回结果是什么,一切的问题都需要一步一步的调试且耗时耗力。自从意识到这个问题后,每次写代码都会加入日志,并将请求参数,返回结果,耗时的数据写入日志,方便后期排查问题。

目前接触比较多Java 开源框架是SpringBoot,默认的日志实现是LogBack,通过配置xml文件就可以输出日志。之前在配置LogBack时,总是无脑的将其他项目的配置复制过来,也不懂为什么要这样配置。通过这几天的学习,把自己对logback的日志记录如下。

基础知识

日志级别

日志输出级别从大高到低为:

  1. OFF
  2. FATAL
  3. ERROR
  4. WARN
  5. INFO
  6. DEBUG
  7. TRACE
  8. ALL

日常开发中常用的是:

  1. ERROR:用于输出影响系统正常运行的信息
  2. WARN:用于输出错误信息,但不影响系统正常运行
  3. INFO:用于记录正常业务日志信息,方便后期的问题排查
  4. DEBUG:用于开发环境下的信息输出

方法打印

推荐使用 Slf4j
记录日志,在LogBack不被允许的情况下可以方便的切换到其他日志系统。实例化logger对象:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class XXX {
public static final Logger log = LoggerFactory.getLogger(XXX.class);
}

如果使用了 lombok
,则可以使用 @Slf4j
注解实例化logger对象

  • 输出ERROR日志
log.error("this is error log;time:{}", System.currentTimeMillis());
  • 输出WARN日志
log.warn("this is warn log;time:{}", System.currentTimeMillis());
  • 输出INFO日志
log.info("this is info log;time:{}", System.currentTimeMillis());
  • 输出DEBUG日志
if (log.isDebugEnabled()) {
log.debug("this is debug log;time:{}", System.currentTimeMillis());
}

在开发中,使用参数化日志而不是字符串拼接,可以调高代码可读性并提高性能,在记录debug日志时,先判断目前所处环境是否支持debug输出,因为 String 字符串的拼接会使用 StringBuilder 的 append()方式,有一定的性能损耗。使用占位符仅 是替换动作,可以有效提升性能。(摘自:阿里巴巴Java开发手册嵩山版)

买它还是iPhone 12?华为Mate 40 RS保时捷设计售价曝光:轻松过万

上一篇

畅购商城(十四):秒杀系统「下」

下一篇

你也可能喜欢

Logback-简介

长按储存图像,分享给朋友