文章目录

  • 1.引包
  • 2. log4j2.xml的配置
  • 3.配置文件中的一些说明
  • springmvc使用log4j2的配置,以及只有控制台打印日志,不生成文件的解决方式,mvc使用log4j2时会出现在controller里的日志只会出现在控制台,但不会生成文件的情况。笔者切身经历了一番磨难终于解决,特此留下此篇说明以留给有需要的朋友。

1.引包

笔者用的是gradle作为包管理,maven请自行搜索包依赖依赖包搜索网站

  • 目前最新依赖包
    //log4j  https://github.com/apache/logging-log4j2compile 'org.apache.logging.log4j:log4j-api:2.11.1'compile 'org.apache.logging.log4j:log4j-core:2.11.1'compile 'org.apache.logging.log4j:log4j-web:2.11.1'

2. log4j2.xml的配置

官方配置说明

  • xml文件,位置只要在resource目录下即可,可以自定义文件名或者路径,官方默认要求是必须在resource根目录下,以log4j2开头的文件名,我这里是在resource目录下的log4j2文件夹下。
    如图:
  • 因为位置不在默认地方,所以需要在web.xml里指定配置目录添加如下代码:
    <!--log4j2--><context-param><param-name>log4jConfiguration</param-name><param-value>classpath:log4j2/log4j2.xml</param-value></context-param><context-param><param-name>log4jRefreshInterval</param-name><param-value>60000</param-value></context-param><listener><listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class></listener>
  • log4j2.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- status=debug 可以查看log4j的装配过程 -->
<configuration status="off"><!-- 文件路径 --><properties><!--设置日志在硬盘上输出的目录${log4j:configParentLocation}使用此查找将日志文件放在相对于log4j配置文件的目录中--><property name="Log_Home">${web:rootDir}/logs</property></properties><!--先定义所有的appender--><appenders><!--输出控制台的配置--><Console name="Console" target="SYSTEM_OUT"><!--输出日志的格式%L::输出代码中的行号。%M:输出产生日志信息的方法名。--><!--"%highlight{%d{HH:mm:ss.SSS} %-5level %logger{36}.%M() @%L - %msg%n}{FATAL=Bright Red, ERROR=Bright Magenta, WARN=Bright Yellow, INFO=Bright Green, DEBUG=Bright Cyan, TRACE=Bright White}"--><PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36}.%M @%L :-> %msg%xEx%n"/></Console><!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档--><RollingFile name="RollingFileInfo" fileName="${Log_Home}/info.${date:yyyy-MM-dd}.log" immediateFlush="true"filePattern="${Log_Home}/$${date:yyyy-MM}/info-%d{MM-dd-yyyy}-%i.log.gz"><PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36}.%M @%L :-> %msg%xEx%n"/><!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--><filters><ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/></filters><Policies><TimeBasedTriggeringPolicy modulate="true" interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies></RollingFile><!--   这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --><RollingFile name="RollingFileDebug" fileName="${Log_Home}/debug.${date:yyyy-MM-dd}.log" immediateFlush="true"filePattern="${Log_Home}/$${date:yyyy-MM}/debug-%d{MM-dd-yyyy}-%i.log.gz"><PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36}.%M @%L :-> %msg%xEx%n"/><filters><ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/><ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="NEUTRAL"/></filters><Policies><TimeBasedTriggeringPolicy modulate="true" interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies></RollingFile><!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 --><RollingFile name="RollingFileError" fileName="${Log_Home}/error.${date:yyyy-MM-dd}.log" immediateFlush="true"filePattern="${Log_Home}/$${date:yyyy-MM}/error-%d{MM-dd-yyyy}-%i.log.gz"><PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36}.%M @%L :-> %msg%xEx%n"/><ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/><Policies><TimeBasedTriggeringPolicy modulate="true" interval="1"/><SizeBasedTriggeringPolicy size="10MB"/></Policies></RollingFile></appenders><!--trace<debug<info<warn<error<fatal--><!--然后定义logger,只有定义了logger并引入的appender,appender才会生效--><!--过滤掉spring和mybatis的一些无用的DEBUG信息--><!--log4j的additivity属性: additivity它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。!--><!--<logger name="org" level="INFO" additivity="false" ></logger>--><!--<logger name="org.springframework" level="INFO" additivity="false"></logger>--><!--<logger name="org.mybatis" level="INFO" additivity="false"></logger>--><loggers><logger name="org.springframework.core" level="info"></logger><logger name="org.springframework.beans" level="info"></logger><logger name="org.springframework.context" level="info"></logger><logger name="org.springframework.web" level="info"></logger><!--建立一个默认的root的logger--><root level="info"><appender-ref ref="Console"/><appender-ref ref="RollingFileInfo"/><appender-ref ref="RollingFileDebug"/><appender-ref ref="RollingFileError"/></root></loggers>
</configuration>

3.配置文件中的一些说明

  • 配置中<!-- status=debug 可以查看log4j的装配过程 --> <configuration status="off">将status改为status=debug ,可以看到装配过程非常详细,可以看到装配文件路径以及写文件路径,如果不知道配置的文件存到了哪里都可以在这里看到,如下
  • 没有写文件的话将status改为debug模式,查看路径,文件路径不对是不能写文件的。我的XML内一些变量有何用也做了比较详细的说明,如果还有不懂可以留言交流。
  • 日志生成位置在发布的文件下下,以上配置我的log日志所在位置为如下:

    另附官方web日志配置说明

springmvc使用log4j2的配置,以及解决controller日志只有控制台打印日志,不生成本项目文件夹下相关推荐

  1. Git常规配置与用法(记录,git配置文件在系统用户文件夹下)

    Git环境配置 一. 全局配置 1. 配置文件 git全局配置文件.gitconfig默认在当前系统用户文件夹下,window可运行%USERPROFILE%查找,Mac系统在cd ~查找. 具体配置 ...

  2. Unity新建项目后打开脚本VS显示为杂项文件(项目文件夹下没有sln文件)的解决方法

    最近因为重装系统的缘故,让我这个虽然玩了几年unity 但还是很菜的菜鸡遇到了一个前所未见的问题:新建unity工程项目后所有c#脚本均显示为杂项文件:且因为没有解决方案文件,导致文件之间不能相互联系 ...

  3. 解决spark运行时控制台打印冗杂的INFO(屏蔽掉无用的INFO)

    今天在spark和hive整合完后启动SparkSql的时候控制台打印出了好多冗余的信息看起来特别不爽 就一个 show databases: 却打印出来这么多信息,让我着实不大容易找到我想要的信息呀 ...

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

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

  5. Log4j2日志框架集成Slf4j日志门面

    1.说明 本文介绍使用日志门面Slf4j打印日志, 底层日志实现使用Log4j2框架, 方便以后切换底层日志实现, Log4j2可以替换成Logback等. 2.依赖管理 在pom.xml依赖管理中导 ...

  6. vue-cli 创建项目不成功 原因为项目文件夹无node_modules文件 进行npm install不成功解决办法

    不知道有没有童鞋出现过全局安装vue-cli是成功的,但是创建项目时命令行报了很多错误,如下 本来是需要按照提示依次切换到项目文件夹,再npm run dev 即可完成项目创建并启动的,但是又报了如下 ...

  7. 解决idea启动tomcat控制台中文乱码

    情况一:tomcat日志中文乱码 如图这种情况,一般在idea用tomcat跑一个web项目启动后tomcat日志在控制台打印出来会出现中文乱码的情况 解决方案1:tomcat的日志配置文件的编码修改 ...

  8. 1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project

     使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-X ...

  9. spring框架做全局异常捕获_springboot springmvc抛出全局异常的解决方法

    springboot中抛出异常,springboot自带的是springmvc框架,这个就不多说了. springmvc统一异常解决方法这里要说明的是.只是结合了springboot的使用而已.直接上 ...

最新文章

  1. FFmpeg再学习 -- FFmpeg解码知识
  2. 13 Tensorflow机制(翻译)
  3. python时间计算_python datetime库使用和时间加减计算
  4. 《计算机科学概论(第12版)》—第0章0.3节学习大纲
  5. java类加载器分类_Java 类加载器的种类
  6. 电脑开关电源维修图解
  7. svchost.exe是什么进程
  8. DAY7:尚学堂高琪JAVA(66~69)
  9. 阿里云海外云服务器5折起,新老用户均可选购(免备案)
  10. 【ps功能精通】3.图层和选取
  11. Oracle数据库(四)备份与还原
  12. 希尔顿携手飞猪拓宽双方会员生态体系
  13. 提交.a文件到svn
  14. 钢琴 低音到高音 音效_什么是低音扬声器,中音扬声器和高音扬声器?
  15. python高阶学习之一:c++调用python
  16. uniapp微信小程序老预览失败,或者上传失败(已解决)
  17. 【自然语言处理】【ChatGPT系列】FLAN:微调语言模型是Zero-Shot学习器
  18. PYNQ框架HLS开发流程备忘
  19. abaqus python_abaqus python脚本入门
  20. 利用ZXing工具生成二维码以及解析二维码

热门文章

  1. private方法可以被代理吗?
  2. 插入U盘弹出不了的问题解决
  3. 计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年3月份最新版)
  4. Ubuntu臭虫(bugs)知多少?
  5. HeadFirst:设计模式-观察者模式
  6. php等级水平评定标准,网球水平定级标准~看看你什么等级
  7. PMSM控制器硬件设计
  8. 士兵杀敌(三)RMQ板子
  9. 机器码、序列号、认证码、注册码的生成算法(二)
  10. 假期的计划又全泡汤了!!!