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

⽇志相关级别、优先级及使⽤⽅法
⼀、为什么要使⽤⽇志框架?
调试: 开发过程中,输出的⽇志便于记录程序在之前的运⾏结果,可以⽅便地知道当前程序的运⾏状态。
错误定位: 项⽬在运⾏⼀段时候后,可能由于数据问题,⽹络问题,内存问题等出现异常,这时⽇志可以帮助开发或者运维⼈员快速定位错误位置,尽快到解决⽅案。
数据分析: ⼤数据的兴起,使得⼤量的⽇志分析成为可能,⽇志中蕴含了⼤量的⽤户数据,包括点击⾏为,兴趣偏好等,⽤户画像对于公司下⼀步的战略⽅向有⼀定指引作⽤。
⼆、常⽤⽇志相关的框架有哪些?
1、⽇志框架及相关优先级介绍
⽇志框架名称⽇志等级及优先级
Logback ALL < TRACE < DEBUG < INFO < WARN < ERROR < OFF
Log4j2ALL < 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)的⽇志信息不会被记录。
三、如何使⽤相关⽇志框架?
1、LogBack使⽤步骤
( 1 )注⼊依赖
特别说明:根据中说明:当引⼊spring-boot-starter-web时,也就⾃动引⼊了Logback,并且在没有其它声明的情况下,它会默认启动Logback作为输出⼿段,默认级别设置为INFO。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
大数据日志分析</dependency>
( 2 )配置⽂件(命名为l)
根节点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中)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--配置控制台的输出-->
<appender name="consolelog"class="ch.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern> [%p] [%d] - %msg%n</pattern>
</layout>
</appender>
<!--⽂件输出info及以上级别并过滤掉ERROR⽇志的配置-->
<appender name="fileInfoLog"class="ch.olling.RollingFileAppender">
<!--筛选的级别有三种 DENY ACCEPT  NEUTRAL  禁⽌,接受和中⽴具体看类 filterReply-->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!--设置权限-->
<level>ERROR</level>
<!--命中-->
<onMatch>DENY</onMatch>
<!--未命中-->
<onMismatch>ACCEPT</onMismatch>
</filter>
<encoder>
<pattern>
[%p] [%d] - %msg%n
</pattern>
</encoder>
<!--滚动策略按照时间来滚动每⽇创建⼀个⽇志⽂件-->
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<fileNamePattern>logs/%d-Logback/fileInfoLog.log</fileNamePattern>
</rollingPolicy>
</appender>
<!--⽂件输出error⽇志的配置-->
<appender name="fileErrorLog"class="ch.olling.RollingFileAppender">
<!--为了在error⽇志中没有info⽇志,所以我们设置⼀个过滤器记住是ThresholdFilter,不是levelFilter-->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder>
<pattern>
[%p] [%d] - %msg%n
</pattern>
</encoder>
<!--滚动策略按照时间来滚动-->
<rollingPolicy class="ch.olling.TimeBasedRollingPolicy">
<fileNamePattern>logs/%d-Logback/fileErrorLog.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
</appender>
<root level="info">
<appender-ref ref="consolelog"/>
<appender-ref ref="fileInfoLog"/>
<appender-ref ref="fileErrorLog"/>
</root>
</configuration>
2、Log4j2使⽤步骤
( 1 )注⼊依赖
特别说明:SLF4J API 旨在⼀次绑定⼀个且仅只能绑定⼀个底层⽇志记录框架,所以需要将上述的logback依赖移除后添加log4j2依赖。
什么是SLF4J?
Simple Logging Facade for Java(SLF4J)⽤作各种⽇志框架(例如java.util.logging,logback,log4j)的简单外观或抽象,允许最终⽤户在部署时插⼊所需的⽇志记录框架。SLF4J只是⼀个外观,这意味着它不提供完整的⽇志记录解决⽅案。使⽤SLF4J⽆法执⾏配置appender或设置⽇志记录级别等操作。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<!-- 移除logback -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 使⽤log4j2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
( 2 )配置⽂件(命名为l)
根节点configuration下有两个属性,三个节点。
两个属性:
status(⽤来指定log4j本⾝的打印⽇志的级别)
monitorinterval(⽤于指定⾃动重新配置的监测间隔时间,单位是s,最⼩是5s)两个节点:
Appenders(负责写⽇志的组件)
Console(⽤来定义输出到控制台的Appender)
name:指定Appender的名字;
target:SYSTEM_OUT 或 SYSTEM_ERR,⼀般只设置默认:SYSTEM_OUT;
PatternLayout:输出格式,不设置默认为:%m%n;
File(⽤来定义输出到指定位置的⽂件的Appender)
name:指定Appender的名字;
fileName:指定输出⽇志的⽬的⽂件带全路径的⽂件名;
PatternLayout:输出格式,不设置默认为:%m%n;
RollingFile(⽤来定义超过指定⼤⼩⾃动删除旧的创建新的的Appender)
name:指定Appender的名字;
fileName:指定输出⽇志的⽬的⽂件带全路径的⽂件名;
PatternLayout:输出格式,不设置默认为:%m%n;
filePattern:指定新建⽇志⽂件的名称格式;
Policies:指定滚动⽇志的策略,就是什么时候进⾏新建⽇志⽂件输出⽇志;
TimeBasedTriggeringPolicy:Policies⼦节点,基于时间的滚动策略,interval属性⽤来指定多久滚动⼀次,默认是1
hour。modulate=true⽤来调整时间:⽐如现在是早上3am,interval是4,那么第⼀次滚动是在4am,接着是
8am,12am…⽽不是7am;
SizeBasedTriggeringPolicy:Policies⼦节点,基于指定⽂件⼤⼩的滚动策略,size属性⽤来定义每个⽇志⽂件的⼤⼩;
DefaultRolloverStrategy:⽤来指定同⼀个⽂件夹下最多有⼏个⽇志⽂件时开始删除最旧的,创建新的(通过max属性)。
Loggers
Root(⽤来指定项⽬的根⽇志,如果没有单独指定Logger,那么就会默认使⽤该Root⽇志输出)
level:⽇志输出级别,共有8个级别,按照从低到⾼为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF;
AppenderRef:Root的⼦节点,⽤来指定该⽇志输出到哪个Appender;
Logger(⽤来单独指定⽇志的形式,⽐如要为指定包下的class指定不同的⽇志级别等)
level:⽇志输出级别,共有8个级别,按照从低到⾼为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF;
name:⽤来指定该Logger所适⽤的类或者类所在的包全路径,继承⾃Root节点;
AppenderRef:Logger的⼦节点,⽤来指定该⽇志输出到哪个Appender,如果没有指定,就会默认继承⾃Root.如果指定
了,那么会在指定的这个Appender和Root的Appender中都会输出,此时我们可以设置Logger的additivity="false"只在⾃定义的Appender中进⾏输出。
⽇志⽂件内容的格式
%c 输出所属类的全名;
%d 输出⽇志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss};
%l 输出⽇志事件发⽣位置,包括类⽬名、发⽣线程,在代码中的⾏数;
%n 换⾏符;
%m 输出代码指定信息,如info(“message”),输出message;
%p 输出优先级,即 FATAL ,ERROR 等;
%r 输出从启动到显⽰该log信息所耗费的毫秒数;
%t 输出产⽣该⽇志事件的线程名;
<?xml version="1.0" encoding="UTF-8"?>
<!--⽇志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后⾯的status,这个⽤于设置log4j2⾃⾝内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够⾃动检测修改配置⽂件和重新配置本⾝,设置间隔秒数-->
<configuration status="off"monitorInterval="30">
<Properties>
<property name="filePattern">${date:yyyy-MM-dd}</property>
</Properties>

本文发布于:2024-09-23 08:24:35,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/387242.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:级别   输出   指定
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议