日志相关级别、优先级及使用方法

一、为什么要使用日志框架?

  • 调试: 开发过程中,输出的日志便于记录程序在之前的运行结果,可以方便地知道当前程序的运行状态。

  • 错误定位: 项目在运行一段时候后,可能由于数据问题,网络问题,内存问题等出现异常,这时日志可以帮助开发或者运维人员快速定位错误位置,尽快找到解决方案。

  • 数据分析: 大数据的兴起,使得大量的日志分析成为可能,日志中蕴含了大量的用户数据,包括点击行为,兴趣偏好等,用户画像对于公司下一步的战略方向有一定指引作用。

二、常用日志相关的框架有哪些?

1、日志框架及相关优先级介绍
日志框架名称 日志等级及优先级
Logback ALL < TRACE < DEBUG < INFO < WARN < ERROR < OFF
Log4j2 ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

log4js、debugout.js等等…

2、日志等级介绍及使用场景
( 1 )ALL

最低等级的,用于打开所有日志记录(包括自定义的级别)。

( 2 )TRACE

用于展现程序执行的轨迹,如函数间的相互调用关系,函数的参数和返回值等现场信息。很低的日志级别,通常不会使用。

( 3 )DEBUG

指出细粒度信息事件,对调试应用程序是非常有帮助的,主要用于开发过程当中打印一些运行信息。

( 4 )INFO

在粗粒度级别上突出强调应用程序的运行过程。打印一些重要的信息,这个能够用于生产环境中输出程序运行的一些重要信息。(程序入口相关参数、计算结果)

( 5 )WARN

表明会出现潜在错误的情形。(某个不常走到的分支,对于常规的操作是不应该打印WARN日志的,只有在满足某个条件才能走到的分支,且这个分支引起了“警觉”,此时就应该打印WARN日志。)

( 6 )ERROR

表明出现了系统错误和异常,无法正常完成目标操作。(调用API的方法时有异常抛出,而且异常无法处理并影响业务功能时使用)

( 7 )FATAL

指出严重的错误事件将会导致应用程序的退出。(Logback无)

( 8 )OFF

最高等级的,用于关闭所有日志记录(包括自定义的级别)。

3、日志级别的作用

开发人员可通过相关的配置改变是否记录相关级别的日志信息。

例如:日志级别配置为INFO,则表示低于INFO级别(TRACE、DEBUG)的日志信息不会被记录。

三、如何使用相关日志框架?

前提:基于Spring Boot的Maven项目实践演示。
Github:https://github.com/liumingjun2018/LogDemoForJava

1、LogBack使用步骤
( 1 )注入依赖

特别说明:根据Spring Boot官方文档中说明:当引入spring-boot-starter-web时,也就自动引入了Logback,并且在没有其它声明的情况下,它会默认启动Logback作为输出手段,默认级别设置为INFO。

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-webartifactId>
dependency>
( 2 )配置文件(命名为logback-test.xml)

根节点configuration下有两个属性,三个节点。

两个属性:

  • contextName( 上下文名称)- 0个或多个
  • property(变量设置)- 0个或多个

三个节点:

  • appender(负责写日志的组件)- 0个或多个

    • filter(级别过滤器,有LevelFilter、EvaluatorFilter和ThresholdFilter三种过滤方式)
    • rollingPolicy (用来设置日志的滚动策略,当达到条件后会自动将条件前的日志生成一个备份日志文
    • triggeringPolicy(日志触发器策略,常用的是日志的大小的控制,当日志达到对应的大小的时候,就会触发,生成新的日志文件。)
    • encoder(负责把对记录事件进行格式化)
  • root(配置根记录器,它支持单个属性,即level属性)- 最多一个

    • appender-ref(引用的每个 appender 都被添加到root中)
  • logger(用来设置某一个包或者具体的某一个类的日志打印级别)- 0个或多个

    • appender-ref(引用的每个 appender 都被添加到logger中)

<configuration>
    
    <appender name="consolelog" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern> [%p] [%d] - %msg%npattern>
        layout>
    appender>
    
    <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
        
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            
            <level>ERRORlevel>
            
            <onMatch>DENYonMatch>
   

你可能感兴趣的:(JAVA,java,log4j2,logback)