关于java:Logback简介

51次阅读

共计 1333 个字符,预计需要花费 4 分钟才能阅读完成。

背景

从毕业到当初加入工作曾经有两年了,在这两年期间,经验的几个大我的项目和一些小我的项目,每个我的项目都波及到日志这个模块。存在的意义无非就是两个:

  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 开发手册嵩山版)

日志规约


[Java 开发手册(泰山版)]


Java 开发手册(泰山版)

原文地址:https://www.haicheng.website/…

正文完
 0