springboot配置log4j2

  • 1.引入相关的依赖
  • 2.配置相应的log4j2.yml及application.yml文件
  • 3.编写相应的测试接口
  • 4.在postman中进行测试即可

部分内容参考:
log4j2.yml配置的文章,很具体,可参考
一个log4j.xml配置的文章(可以参考)

1.引入相关的依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency><!-- 包含 mvc,aop 等jar资源 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><!-- 切换log4j2日志读取 --><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency><!-- 配置 log4j2 -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<!-- 加上这个才能辨认到log4j2.yml文件 -->
<dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-yaml</artifactId>
</dependency>

注意
一定要注意项目中原本的依赖,可能会有冲突,因为使用log4j2依赖一定要排除原本项目中的log4j、logback相关依赖。
我就在此处一直报错,但是最后也不知道哪里错了。。

如果一直报错,如下代码所示。就在右侧maven框中,将项目clean再install一下。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/Zll/.m2/repository/ch/qos/logback/logback-classic/1.2.6/logback-classic-1.2.6.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/Zll/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.14.1/log4j-slf4j-impl-2.14.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]

2.配置相应的log4j2.yml及application.yml文件

log4j2.yml:
注意log4j2的配置文件中的文件存储地址是由log.path的value值决定的。如果value值没有写具体哪个盘,就默认在当前项目路径中创建

# 共有8个级别,按照从低到高为:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF。Configuration:status: warnmonitorInterval: 30Properties: # 定义全局变量Property: # 缺省配置(用于开发环境)。其他环境需要在VM参数中指定,如下:#测试:-Dlog.level.console=warn -Dlog.level.xjj=trace#生产:-Dlog.level.console=warn -Dlog.level.xjj=info- name: log.level.consolevalue: info- name: log.pathvalue: logs/${project.name}_log- name: project.namevalue: opendoc- name: log.patternvalue: "%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %-30.30C{1.} : %m%n"Appenders:Console:  #输出到控制台name: CONSOLEtarget: SYSTEM_OUTPatternLayout:pattern: ${log.pattern}#   启动日志RollingFile:- name: ROLLING_FILEfileName: ${log.path}/${project.name}.logfilePattern: "${log.path}/historyRunLog/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"PatternLayout:pattern: ${log.pattern}Filters:#        一定要先去除不接受的日志级别,然后获取需要接受的日志级别ThresholdFilter:- level: erroronMatch: DENYonMismatch: NEUTRAL- level: infoonMatch: ACCEPTonMismatch: DENYPolicies:TimeBasedTriggeringPolicy:  # 按天分类modulate: trueinterval: 1DefaultRolloverStrategy:     # 文件最多100个max: 100#   平台日志- name: PLATFORM_ROLLING_FILEignoreExceptions: falsefileName: ${log.path}/platform/${project.name}_platform.logfilePattern: "${log.path}/platform/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"PatternLayout:pattern: ${log.pattern}Policies:TimeBasedTriggeringPolicy:  # 按天分类modulate: trueinterval: 1DefaultRolloverStrategy:     # 文件最多100个max: 100#   业务日志- name: BUSSINESS_ROLLING_FILEignoreExceptions: falsefileName: ${log.path}/bussiness/${project.name}_bussiness.logfilePattern: "${log.path}/bussiness/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"PatternLayout:pattern: ${log.pattern}Policies:TimeBasedTriggeringPolicy:  # 按天分类modulate: trueinterval: 1DefaultRolloverStrategy:     # 文件最多100个max: 100#   错误日志- name: EXCEPTION_ROLLING_FILEignoreExceptions: falsefileName: ${log.path}/exception/${project.name}_exception.logfilePattern: "${log.path}/exception/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"ThresholdFilter:level: erroronMatch: ACCEPTonMismatch: DENYPatternLayout:pattern: ${log.pattern}Policies:TimeBasedTriggeringPolicy:  # 按天分类modulate: trueinterval: 1DefaultRolloverStrategy:     # 文件最多100个max: 100#   DB 日志- name: DB_ROLLING_FILEignoreExceptions: falsefileName: ${log.path}/db/${project.name}_db.logfilePattern: "${log.path}/db/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"PatternLayout:pattern: ${log.pattern}Policies:TimeBasedTriggeringPolicy:  # 按天分类modulate: trueinterval: 1DefaultRolloverStrategy:     # 文件最多100个max: 100Loggers:Root:level: infoAppenderRef:- ref: CONSOLE- ref: ROLLING_FILE- ref: EXCEPTION_ROLLING_FILELogger:- name: platformlevel: infoadditivity: falseAppenderRef:- ref: CONSOLE- ref: PLATFORM_ROLLING_FILE- name: bussinesslevel: infoadditivity: falseAppenderRef:- ref: BUSSINESS_ROLLING_FILE- name: exceptionlevel: debugadditivity: trueAppenderRef:- ref: EXCEPTION_ROLLING_FILE- name: dblevel: infoadditivity: falseAppenderRef:- ref: DB_ROLLING_FILE#    监听具体包下面的日志#    Logger: # 为com.xjj包配置特殊的Log级别,方便调试#      - name: com.xjj#        additivity: false#        level: ${sys:log.level.xjj}#        AppenderRef:#          - ref: CONSOLE#          - ref: ROLLING_FILE

application.xml:(注意将原本springboot文件中内置日志的相关配置清除)
application.xml:

logging:config: classpath:log4j2.yml

3.编写相应的测试接口

引入相应包:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;//定义logger:
protected final Logger logger = LoggerFactory.getLogger(this.getClass());//在Controller中随便写个测试接口,使用第一种第二种都可
//第一种,没有定义相应的配置工具类,简单使用
@GetMapping(value="/test")public String test(){logger.debug("debug ****************************");logger.info("info ****************************");logger.warn("warn ****************************");logger.error("error ****************************");return "success";}//第二种,定义了相应的log枚举类、工具类,具体可参见引用的文章,很具体。@GetMapping("/helloworld")public String helloworld() throws Exception{Logger log = LogUtils.getExceptionLogger();Logger log1 = LogUtils.getBussinessLogger();Logger log2 = LogUtils.getDBLogger();userService.findUsers(0,10,"");log.error("getExceptionLogger===日志测试");log1.info("getBussinessLogger===日志测试");log2.debug("getDBLogger===日志测试");return "helloworld";}

4.在postman中进行测试即可



如图示即可。
如果觉得代码不完整,参考相应的参考文章(更为具体)

最后,感觉log4j2配置完以后看不到数据库表调用的SQL语句。(也可能我还没配置到)没有springboot内置的日志好,那个直接改为debug级别就可以显示sql及库表调用的情况。

# 调试时使用Loggers:Root:level: infoAppenderRef:- ref: CONSOLELogger: #单独设置某些包的输出级别- name: com.thzh #复数加上-additivity: false #去除重复的loglevel: debugAppenderRef:- ref: CONSOLE #复数加上-- ref: ROLLING_FILE #复数加上-

具体为什么这么配置不太清楚,慢慢学习。

springboot配置log4j2相关推荐

  1. 【Spring】SpringBoot 配置 log4j2 日志

    1. 概述 官方参考文档:Log4j Apache Log4j2 是对原先的 Log4j 项目的升级版本,参考了 logback 的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升. 异常 ...

  2. springboot配置log4j2踩地雷

    需要引入pom如下,必须exclusions排除springboot自带的logback和slf4j jar包,否则log4j2配置一直不生效 <dependency><groupI ...

  3. springboot配置log4j2报错:java.lang.IllegalStateException: Logback configuration error detected:

    引入log4j2后启动报错. Exception in thread "main" java.lang.IllegalStateException: java.lang.Illeg ...

  4. Springboot使用Log4j2的配置详解

    Springboot使用Log4j2的配置 日志框架的对比和选择 一.依赖配置(pom文件) 二.log4j2.xml文件的配置 三.Log4j2.xml配置文件核心概念解析 1.全局Property ...

  5. SpringBoot整合Log4j2以及配置详解

    文章目录 标题SpringBoot整合Log4j2以及配置详解 1.加入依赖 2.在src.java.main.resources目录下创建log4j2.xml文件 log4j2.xml文件内容如下: ...

  6. SpringBoot 使用 log4j2

    一.新建工程 选择一些基础依赖 填写工程名称和项目路径 二.工程配置 修改文件编码格式 设置Java Compiler 修改maven配置文件路径 三.pom.xml的web依赖中排除掉logging ...

  7. Springboot整合log4j2日志全解

    作者:上帝爱吃苹果 cnblogs.com/keeya/p/10101547.html 在项目推进中,如果说第一件事是搭Spring框架的话,那么第二件事情就是在Sring基础上搭建日志框架,我想很多 ...

  8. SpringBoot 集成log4j2

    SpringBoot集成log4j2 1. Log4j2优点 2. Log4j2日志级别 2.1 级别 2.2 视图 3. SpringBoot整合Log4j2配置 4. log4j2.yml配置 1 ...

  9. 关于springboot整合log4j2的史上最全配置解释

    说明:本文为作者原创,欢迎大家转载,不过记得声明出处哦~ 前言 日志管理在软件开发中必不可少,而Java开发中,log4j2以其简单易用的特点使其普及度非常高.但非常可惜的是log4j2的官方文档本人 ...

  10. springboot配置Redis哨兵主从服务 以及 Redis 集群

    redis哨兵集群配置 Sentinel(哨兵)是Redis 的高可用性解决方案:由一个或多个Sentinel 实例 组成的Sentinel 系统可以监视任意多个主服务器,以及这些主服务器属下的所有从 ...

最新文章

  1. Asp.net(C#)给图片加上水印效果(转自园上的Seven Eleven)
  2. python【力扣LeetCode算法题库】836- 矩形重叠
  3. vue1与vue2的路由 以及vue2项目大概了解
  4. python中编完类后到实例编写_[零基础学python]编写类之一创建实例
  5. Boost:返回报告错误report errors
  6. windows剪切板暂存
  7. 浅谈Nginx负载均衡与F5的区别
  8. [js高手之路] html5 canvas系列教程 - 线条样式(lineWidth,lineCap,lineJoin,setLineDash)
  9. react中类组件this指向
  10. Adaline神经网络简单介绍和MATLAB简单实现
  11. html css浪漫页面,程序员的浪漫表白代码(JS+CSS+HTML)附带源码
  12. 物联网终端五年后将超 270 亿!破竹之势下程序员如何修炼内功?
  13. Flutter之GlobalKey详解
  14. 编程循迹小车传感器怎么定义_「老丁教乐高EV3基础编程」学完练完本课,足矣应付70%的编程要求...
  15. 风险模型 - 变量筛选
  16. 对于网络文学而言 计算机叙事,【网络文学论文】传统文学中网络文学特征研究(共4573字)...
  17. 痛苦的刷路由器 破校园网 小米mini潘多拉
  18. 在计算机上如何打开资源管理器,资源管理器怎么打开?打开资源管理器的5种方法...
  19. 由连连看游戏作弊器想到的
  20. linux系统弹出鼠标,Ubuntu14.04及以上操作系统鼠标闪烁问题

热门文章

  1. python人狗大战游戏_6.5 人狗大战.py
  2. Burp Suite CA证书下载及导入教程
  3. 阿里国际站出口通升级金品诚企详细流程
  4. 利用华为ENSP模拟器分析和配置中小型企业网络的综合实验(上)
  5. LABjs、RequireJS、SeaJS 哪个最好用?为什么?
  6. 评价系统海量数据存储设计
  7. 腾讯手机管家(android2.3),腾讯手机管家3.4 Android发布_软件资讯软件快报-中关村在线...
  8. 利用微信JSSDK实现自动定位
  9. 谷歌公开裸眼3D全息视频聊天技术:8k屏幕、4块GPU
  10. 一次U盘文件变乱码的恢复