springmvc使用log4j2的配置,以及解决controller日志只有控制台打印日志,不生成本项目文件夹下
文章目录
- 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日志只有控制台打印日志,不生成本项目文件夹下相关推荐
- Git常规配置与用法(记录,git配置文件在系统用户文件夹下)
Git环境配置 一. 全局配置 1. 配置文件 git全局配置文件.gitconfig默认在当前系统用户文件夹下,window可运行%USERPROFILE%查找,Mac系统在cd ~查找. 具体配置 ...
- Unity新建项目后打开脚本VS显示为杂项文件(项目文件夹下没有sln文件)的解决方法
最近因为重装系统的缘故,让我这个虽然玩了几年unity 但还是很菜的菜鸡遇到了一个前所未见的问题:新建unity工程项目后所有c#脚本均显示为杂项文件:且因为没有解决方案文件,导致文件之间不能相互联系 ...
- 解决spark运行时控制台打印冗杂的INFO(屏蔽掉无用的INFO)
今天在spark和hive整合完后启动SparkSql的时候控制台打印出了好多冗余的信息看起来特别不爽 就一个 show databases: 却打印出来这么多信息,让我着实不大容易找到我想要的信息呀 ...
- SpringBoot整合Log4j2以及配置详解
文章目录 标题SpringBoot整合Log4j2以及配置详解 1.加入依赖 2.在src.java.main.resources目录下创建log4j2.xml文件 log4j2.xml文件内容如下: ...
- Log4j2日志框架集成Slf4j日志门面
1.说明 本文介绍使用日志门面Slf4j打印日志, 底层日志实现使用Log4j2框架, 方便以后切换底层日志实现, Log4j2可以替换成Logback等. 2.依赖管理 在pom.xml依赖管理中导 ...
- vue-cli 创建项目不成功 原因为项目文件夹无node_modules文件 进行npm install不成功解决办法
不知道有没有童鞋出现过全局安装vue-cli是成功的,但是创建项目时命令行报了很多错误,如下 本来是需要按照提示依次切换到项目文件夹,再npm run dev 即可完成项目创建并启动的,但是又报了如下 ...
- 解决idea启动tomcat控制台中文乱码
情况一:tomcat日志中文乱码 如图这种情况,一般在idea用tomcat跑一个web项目启动后tomcat日志在控制台打印出来会出现中文乱码的情况 解决方案1:tomcat的日志配置文件的编码修改 ...
- 1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project
使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-X ...
- spring框架做全局异常捕获_springboot springmvc抛出全局异常的解决方法
springboot中抛出异常,springboot自带的是springmvc框架,这个就不多说了. springmvc统一异常解决方法这里要说明的是.只是结合了springboot的使用而已.直接上 ...
最新文章
- FFmpeg再学习 -- FFmpeg解码知识
- 13 Tensorflow机制(翻译)
- python时间计算_python datetime库使用和时间加减计算
- 《计算机科学概论(第12版)》—第0章0.3节学习大纲
- java类加载器分类_Java 类加载器的种类
- 电脑开关电源维修图解
- svchost.exe是什么进程
- DAY7:尚学堂高琪JAVA(66~69)
- 阿里云海外云服务器5折起,新老用户均可选购(免备案)
- 【ps功能精通】3.图层和选取
- Oracle数据库(四)备份与还原
- 希尔顿携手飞猪拓宽双方会员生态体系
- 提交.a文件到svn
- 钢琴 低音到高音 音效_什么是低音扬声器,中音扬声器和高音扬声器?
- python高阶学习之一:c++调用python
- uniapp微信小程序老预览失败,或者上传失败(已解决)
- 【自然语言处理】【ChatGPT系列】FLAN:微调语言模型是Zero-Shot学习器
- PYNQ框架HLS开发流程备忘
- abaqus python_abaqus python脚本入门
- 利用ZXing工具生成二维码以及解析二维码