Spring mvc集成log4j2
前期环境
Spring mvc + Maven + Idea
一、下面开始配置log4j2,先简单演示其如何配置,再仔细了解log4j2用法。
1.1 配置pom.xml,引用log4j2相关包
<!--log4j2支持-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.2</version>
</dependency>
如果不知道该引用哪些包,可以在log4j2官网查看其最新的Jar包 https://logging.apache.org/log4j/2.x/maven-artifacts.html
1.2 配置简单的log4j2.xml配置文件
在项目的classpath目录下新建log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 配置LoggerConfig,即Appenders的日志级别为WARN -->
<Configuration status="WARN">
<!-- Appenders支持配置多个Appender,支持向不同的目标输送日志,本例为配置向控制台输出 -->
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
</Appenders>
<!-- Loggers支持配置多个Logger,可引用不同的目标Appender,也可根据业务需求定制特定要求的Appender -->
<Loggers>
<Root level="info">
<AppenderRef ref="Console" />
</Root>
</Loggers>
</Configuration>
1.3 在web.xml文件里引用log4j2.xml
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:log4j2.xml</param-value>
</context-param>
如果项目中使用的是Servlet2.5以上版本,则不需要配置用于log4j2的监听,所以现在一般不需要在单独为log4j2配Listener
1.4 测试日志输出
从上图看出,成功输出日志,说明log4j2初步配置成功。
二、log4j2相关基础
2.1 分析上例
PatternLayout写法
<PatternLayout pattern="%d{yyyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
%d{yyyy/MM/dd HH:mm:ss.SSS} 输出时间格式 (对应上例 2019/04/11 20:35:10.650)
[%t] 输出当前线程名称 (对应上例 [http-nio-8080-exec-6] )
%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0 (对应上例 INFO)
%logger{36} 输出logger名称,因为Root Logger没有名称,所以没有输出,只输出了对应类 myProject.Controller.LoginController2
%msg 输出日志文本
%n 换行
其他常用的占位符有:
%F 输出所在的类文件名,如LoginController2.java
%L 输出行号
%M 输出所在方法名
%l 输出语句所在的行数, 包括类名、方法名、文件名、行数
2.2 log4j2日志级别
TRACE < DEBUG < INFO < WARN < ERROR < FATAL,分别用来指定这条日志信息的重要程度,Log4j有一个规则:只输出级别不低于设定级别的日志信息,假设Loggers级别设定为INFO,则INFO、WARN、ERROR和FATAL级别的日志信息都会输出,而级别比INFO低的DEBUG和TRACE则不会输出。
下面还是用上例的配置测试其日志级别
由于配置文件中LoggerConfig定义的级别为WARN,即<Configuration status="WARN">,所以正常只有WARN,ERROR和FATAL会打印,但验证结果多了个INFO,是因为在Logger中引用了控制台的Appender,并单独指定了级别为INFO,即<Root level="info">,说实话不是很懂,所以开始了解log4j2的标签。
2.3 log4j2常用标签
<Configuration> log4j2.xml的根标签 status 设置的是log4j2自身内部的信息输出级别,输出到控制台
<Appenders> 这个标签包含多个<Appender/>
子标签,用于指定日志输出的位置及格式。待续
下面来看一个复杂点的配置文件,将不同级别的日志输出到不同的日志文件中,该配置参考博客
Spring mvc集成log4j2的更多相关文章
- Spring MVC集成slf4j-logback
转自: Spring MVC集成slf4j-logback 1. Spring MVC集成slf4j-log4j 关于slf4j和log4j的相关介绍和用法,网上有很多文章可供参考,但是关于logb ...
- spring mvc集成freemarker使用
freemarker作为视图技术出现的比velocity早,想当年struts风靡一时,freemarker作为视图层也风光了一把.但现在velocity作为后起之秀的轻量级模板引擎,更容易得到青睐. ...
- spring mvc集成velocity使用
目前流行的三大页面视图神器是:老牌大哥jsp.后起之秀freemarker和velocity.这里不详细比较这三者的优劣,总体来说,jsp是标配,但后面两个更严格的执行了视图与业务的分离,页面里是不允 ...
- spring mvc 集成freemarker模板
主要使用到的jar 文件:spring mvc +freemarker.jar 第一步:spring mvc 集成 freemarker <!-- 定义跳转的文件的前后缀 ,视图模式配置--&g ...
- Spring MVC集成Swagger
什么是Swagger? 大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API——REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Servi ...
- Spring MVC集成Log4j
以下示例显示如何使用Spring Web MVC框架集成LOG4J.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一 ...
- Spring MVC集成Spring Data Reids和Spring Session实现Session共享
说明:Spring MVC中集成Spring Data Redis和Spring Session时版本是一个坑点,比如最新版本的Spring Data Redis已经不包含Jedis了,需要自行引入. ...
- Spring Boot与Spring MVC集成启动过程源码分析
开源项目推荐 Pepper Metrics是我与同事开发的一个开源工具(https://github.com/zrbcool/pepper-metrics),其通过收集jedis/mybatis/ht ...
- Spring MVC集成Swagger2.0
在集成Swagger之前,得先说说什么是Swagger,它是用来做什么的,然后再讲讲怎么集成,怎么使用,当然,在这之前,需要了解一下OpenAPI. OpenAPI OpenAPI 3.0规范定义了一 ...
随机推荐
- java中xxe漏洞修复方法
java中禁止外部实体引用的设置方法不止一种,这样就导致有些开发者修复的时候采用的错误的方法 之所以写这篇文章是有原因的!最早是有朋友在群里发了如下一个pdf, 而当时已经是2019年1月末了,应该不 ...
- 纯JS.CSS编写的可拖拽并左右分栏的插件(复制代码就能用)
<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equ ...
- angular2--Tour of Heroes学习和分析--路由
引入路由模块时的一个报错 No base href set. Please provide a value for the APP_BASE_HREF token or add a base elem ...
- 利用ResultFilter实现asp.net mvc 页面静态化
为了提高网站性能.和网站的负载能力,页面静态化是一种有效的方式,这里对于asp.net mvc3 构架下的网站,提供一种个人认为比较好的静态话方式. 实现原理是通过mvc提供的过滤器扩展点实现页面内容 ...
- WebDriver实现网页自动化测试(以python为例说明,ruby用法类似)
什么是Webdriver? Selenium 2,又名 WebDriver,它的主要新功能是集成了 Selenium 1.0 以及 WebDriver(WebDriver 曾经是 Selenium 的 ...
- CentOS6.5 切换 图形界面 与 命令行界面
CentOS6.5 切换图形界面与命令行界面 [1]场景1:图形界面 -> 命令行界面 方式一(快捷键):Ctrl + Alt + F2 方式二(终端命令):init 3 (PS:init与3之 ...
- Linux服务器---博客wordpress
Wordpress Wordpress是一个开源的博客平台,是搭建个人博客的首选,用户可以去wordpress中文网站寻找帮助资料 1.下载wordpress软件(https://cn.wordpre ...
- JS文件写法操作,DOM基本操作
js文件写法.规范 // 定义全局变量 var num = 0;//这个是用来记数的. // 页面加载完成 window.onload = funtion(){ intVar();//初始化变量 s ...
- 996.icu,不加班的程序员有前途吗?
一.有没有不加班的程序员? 有,我就是. 我目前工作与一家500强外企(欧美),职称为高级软件开发专家. 我在这家公司(500强外企)已经服务了10年,所有加班次数合起来不超过10天,最近3年则一次都 ...
- 编译原理 #02# 简易递归下降分析程序(js实现)
// 实验存档 截图: 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...