当前位置: 首页 > news >正文

springboot整合log4j2案例以及异常输出格式案例2

目录

一   springboot项目

1.1 springboot项目使用logback默认日志

二  springboot项目集成log4j2

2.1 引入依赖

2.2 排除依赖

2.3添加log4j2配置文件

2.4 在application配置文件中添加log4j2配置文件

 2.5 异步配置

2.6 启动验证

三  配置异常格式案例

3.1 异常格式参考

3.2  异常案例

3.2.1 默认不设置异常格式

3.2.2 场景1:%throwable

3.2.3 场景2*:%throwable{short}

3.2.4 场景3:%throwable{short.className}

3.2.5 场景4:%throwable{short.fileName}

3.2.6 场景5:%throwable{short.methodName}

3.2.7场景6:%throwable{short.lineNumber}

3.2.8场景7*:%throwable{short.messae}

3.2.9场景8:%throwable{short.messae}

3.2.10场景9*:%throwable{n}

3.2.11场景10:%throwable{separator( --> )}

3.3结论


一   springboot项目

1.1 springboot项目使用logback默认日志

1.项目启动后,打印日志

二  springboot项目集成log4j2

2.1 引入依赖

<!--log4j2-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

2.2 排除依赖

springboot默认使用Logback日志框架来记录日志,并用INFO级别输出到控制台,所以我们要先排除它的依赖

<!--spring boot的启动类 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency>

2.3添加log4j2配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->
<!--  %d{HH:mm:ss.SSS}  毫秒的时间%p代表输出该条日志的等级%t  当前线程名称%-5level  日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0%c{1}  类名%L 输出行号%msg 日志文本%n 换行其他常用的占位符有:%F 输出所在的类文件名,如Client.java%M 输出所在方法名%m是输出代码指定的日志信息%l  输出语句所在的行数, 包括类名、方法名、文件名、行数 (这个比较强大)  -->
<configuration status="WARN" monitorInterval="30"><!--先定义所有的appender--><appenders><!--这个输出控制台的配置--><console name="Console" target="SYSTEM_OUT"><!--输出日志的格式--><PatternLayout pattern="%clr{[%d{HH:mm:ss:SSS}]}{green} [%p] [%t] - %c{5} - %m%clr{%throwable{short.methodName}}{red}%n"/><ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/><!--        <PatternLayout pattern="%clr{[%d{HH:mm:ss:SSS}]}{green} [%p] [%t] - %l- %m%clr{%throwable}{red}%n"/>-->
<!--      <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %style{%L}{red} %M - %msg%style{%throwable}{red}%n"  disableAnsi="false" noConsoleNoAnsi="false"/>--></console><!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用--><File name="log" fileName="E:/log4j2/test.log" append="false"><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] [%t] - %l - %m%n"/></File><!--INFO日志文件输出 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileInfo" fileName="E:/log4j2/info.log"filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log"><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="100 MB"/></Policies></RollingFile><!-- Warn日志文件输出 --><RollingFile name="RollingFileWarn" fileName="E:/log4j2/warn.log"filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log"><ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/><Policies><TimeBasedTriggeringPolicy/><SizeBasedTriggeringPolicy size="100 MB"/></Policies><!-- DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 --><DefaultRolloverStrategy max="20"/></RollingFile><!-- Error日志文件输出 --><!--<RollingFile name="RollingFileError" fileName="E:/logs/error.log"--><!--filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">--><!--<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>--><!--<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>--><!--<Policies>--><!--<TimeBasedTriggeringPolicy/>--><!--<SizeBasedTriggeringPolicy size="100 MB"/>--><!--</Policies>--><!--</RollingFile>--></appenders><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--><loggers><!--节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等--><!--<logger name="org.springframework" level="INFO"></logger>--><!--<logger name="org.mybatis" level="INFO"></logger>-->
<!--        <root level="INFO">-->
<!--            <appender-ref ref="Console"/>-->
<!--            <appender-ref ref="log"/>-->
<!--            <appender-ref ref="RollingFileInfo"/>-->
<!--            <appender-ref ref="RollingFileWarn"/>-->
<!--            &lt;!&ndash;<appender-ref ref="RollingFileError"/>&ndash;&gt;-->
<!--        </root>--><AsyncRoot level="INFO"  includeLocation="true" ><AppenderRef ref="Console"/></AsyncRoot></loggers>
</configuration>

2.4 在application配置文件中添加log4j2配置文件

需要在application.properties文件中添加配置 

 2.5 异步配置

1.添加依赖

<dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>3.4.4</version>
</dependency>

2.配置:新增一个log4j2_component.properties文件,配置内容如下:

 log4j2.contextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector

2.6 启动验证

springboot 集成Log4j2_springboot集成log4j2-CSDN博客

https://www.zhihu.com/tardis/bd/art/244943401?source_id=1001

SpringBoot整合Log4j2日志框架 - Evan1024 - 博客园

springboot集成log4j2日志 - theSummerDay - 博客园

https://mp.weixin.qq.com/s/sLo_yMwTxzp52TLBKtdkqA

1.控制台输出

2.不同文件输出

3.输出语句: 使用门面层slf4j

三  配置异常格式案例

3.1 异常格式参考

Pattern Layout :: Apache Log4j

https://blog.csdn.net/wb1046329430/article/details/119222123

3.2  异常案例

3.2.1 默认不设置异常格式

1.正常所打印异常日志

1.针对错误日志输出,没有指定输出格式:输出完整的堆栈信息

3.2.2 场景1:%throwable

默认情况下,这将输出完整的跟踪,就像调用Throwable.printstacktrace()一样。

3.2.3 场景2*:%throwable{short}

输出 Throwable 的第一行。

3.2.4 场景3:%throwable{short.className}

输出发生异常的类的名称

3.2.5 场景4:%throwable{short.fileName}

输出发生异常的类的名称

3.2.6 场景5:%throwable{short.methodName}

输出发生异常的方法名。

3.2.7场景6:%throwable{short.lineNumber}

输出发生异常的行号。

3.2.8场景7*:%throwable{short.messae}

输出消息

3.2.9场景8:%throwable{short.messae}

输出本地化消息。

3.2.10场景9*:%throwable{n}

指定输出行数。指定%throwable{none}或%throwable{0}将抑制异常的输出

3.2.11场景10:%throwable{separator( --> )}

3.3结论

1.ex|exception|throwable: 输出完整的异常堆栈,输出格式和Throwable.printStackTrace()相同

2.xEx|xException|xThrowable: 除了输出ex|exception|throwable的信息外,还输出类所在的包信息,例如类所在目录的jar包名称

未配置异常输出格式时默认输出格式为xEx|xException|xThrowable。即默认会通过类加载获取异常堆栈中每个类的包名和版本号。

3.解决办法:

修改log4j的日志配置,强制指定每个日志文件的异常堆栈格式为ex|exception|throwable,修改如下:

%m%clr{%throwable}{short}{red}%n

%m%clr{%throwable}{n}{red}%n

%m%clr{%throwable}{short.message}{red}%n


http://www.mrgr.cn/news/81813.html

相关文章:

  • 021-spring-springmvc
  • 探寻 OneCode 核心优势:MVVM 进阶与前后端协同之魅
  • Linux(Ubuntu/CentOS)配置开机自启动服务
  • [手机Linux] 七,NextCloud优化设置
  • Harmony普通通知
  • mybatisPlus打印sql配置
  • 【SpringMVC】REST 风格
  • Pytorch | 利用DTA针对CIFAR10上的ResNet分类器进行对抗攻击
  • ipad如何直连主机(Moonlight Sunshine)
  • 【Linux学习五】时间日期指令与查找指令
  • 将现有Web 网页封装为macOS应用
  • Shell的变量功能
  • 学习记录—正则表达式-基本语法
  • 总结TCP/IP四层模型
  • jdk动态代理和cglib动态代理对比
  • Linux Debian安装ClamAV和命令行扫描病毒方法,以及用Linux Shell编写了一个批量扫描病毒的脚本
  • QTday3
  • 2024第一届Solar杯应急响应挑战赛
  • iDP3复现代码数据预处理全流程(二)——vis_dataset.py
  • 使用Xilinx PCIE XDMA框架读写访问DDR3内容
  • 远方的灯塔(自创诗歌浅析)
  • Atcoder Beginner Contest 385
  • HTML4笔记
  • 【MATLAB】对连续信号采样的研究
  • 我们来学activiti -- bpmn
  • Jupyter在运行上出现错误:ModuleNotFoundError: No module named ‘wordcloud‘