Spring Boot 学习系列(06)—采用log4j2记录日志
此文已由作者易国强授权网易云社区发布。
欢迎访问网易云社区,了解更多网易技术产品运营经验。
为什么选择log4j2
log4j2相比于log4j1.x和logback来说,具有更快的执行速度。同时也支持日志的异步写入。还有很多有趣的特性,大家可以参考官方文档
在这篇文章里,对比描述了log4j2的优点,以及在传统的应用中如何进行日志的升级。在本文主要说下spring boot环境中如果使用lig4j2记录日志。
spring boot 默认采用Logback进行日志的记录。当然也是支持log4j的。想要替换,其实很简单,如下代码所示,我们将默认的logback日志依赖移除,加入log4j2的依赖即可。
<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><dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId></dependency>
需要注意的是,如果项目中引入的其他依赖包中也使用了logback,编译时提示错误,以同样的方式将对应的依赖包exclusion即可。
如果我们需要自定义日志记录的格式和内容,我们可以在application.properties文件中指定日志文件的路径,如下所示:
logging.config=classpath:log4j2.xml
然后在resources下加入log4j2.xml文件,示例如下:
<?xml version="1.0" encoding="UTF-8"?><configuration status="info">
<!--先定义所有的appender-->
<appenders>
<!--这个输出控制台的配置-->
<Console name="console" target="SYSTEM_OUT">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
<!--这个都知道是输出日志的格式-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</Console> <!-- infoLog日志 -->
<RollingFile name="infolog" fileName="log/info.log"
filePattern="log/info.%d{yyyy-MM-dd}.log">
<ThresholdFilter level="INFO"/>
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} - %logger [%thread] %-5level %c %M:%L - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true"/>
</Policies>
</RollingFile>
<!-- debugLog日志 -->
<RollingFile name="debuglog" fileName="log/debug.log"
filePattern="log/debug.%d{yyyy-MM-dd}.log">
<ThresholdFilter level="DEBUG"/>
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} - %logger [%thread] %-5level %c %M:%L - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true"/>
</Policies>
</RollingFile>
<!-- errorLog日志 -->
<RollingFile name="errorlog" fileName="log/faerror.log"
filePattern="log/faerror.%d{yyyy-MM-dd}.log">
<ThresholdFilter level="ERROR"/>
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} - %logger [%thread] %-5level %c %M:%L - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true"/>
</Policies>
</RollingFile>
<!-- warnLog日志 -->
<RollingFile name="warnlog" fileName="log/warn.log"
filePattern="log/warn.%d{yyyy-MM-dd}.log">
<ThresholdFilter level="WARN"/>
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} - %logger [%thread] %-5level %c %M:%L - %msg%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true"/>
</Policies>
</RollingFile> <!--监控相关日志 begin -->
<RollingFile name="RollingFileHttpTrace" fileName="logs/trace/trace_http.log"
filePattern="log/trace/trace_http.log.%d{yyyy-MM-dd}.txt">
<PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss,SSS}],%m%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
</appenders> <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
<loggers> <!-- 监控相关日志-->
<logger name="httpTraceLog" level="INFO" additivity="false">
<appender-ref ref="RollingFileHttpTrace"/>
</logger> <!--建立一个默认的root的logger-->
<root level="INFO" includeLocation="true">
<appender-ref ref="errorlog"/>
<appender-ref ref="warnlog"/>
<appender-ref ref="infolog"/>
</root>
</loggers></configuration>
不足之处,欢迎指正,谢谢~
更多网易技术、产品、运营经验分享请点击。
相关文章:
【推荐】 块存储、文件存储、对象存储这三者的本质差别
Spring Boot 学习系列(06)—采用log4j2记录日志的更多相关文章
- spring boot 学习(六)spring boot 各版本中使用 log4j2 记录日志
spring boot 各版本中使用 log4j2 记录日志 前言 Spring Boot中默认日志工具是 logback,只不过我不太喜欢 logback.为了更好支持 spring boot 框架 ...
- Spring Boot 2 中如何使用 Log4j2 记录日志
上一篇我们介绍了Spring Boot 2.x中默认日志框架Logback的使用.今天继续说说日志,接下来我们要讲是前段时间爆出核弹漏洞的Log4j2.虽然出了漏洞,让很多小伙伴痛苦了1-2周(加班) ...
- Spring Boot 学习系列(10)—SpringBoot+JSP的使
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 解决问题 随着spring boot 框架的逐步使用,我们期望对于一些已有的系统进行改造,做成通用的脚手架, ...
- Spring Boot 学习系列(03)—jar or war,做出你的选择
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 两种打包方式 采用Spring Boot框架来构建项目,我们对项目的打包有两种方式可供选择,一种仍保持原有的 ...
- Spring Boot 学习系列(05)—自定义视图解析规则
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自定义视图解析 在默认情况下Spring Boot 的MVC框架使用的视图解析ViewResolver类是C ...
- Spring Boot 学习系列(09)—自定义Bean的顺序加载
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Bean 的顺序加载 有些场景中,我们希望编写的Bean能够按照指定的顺序进行加载.比如,有UserServ ...
- Spring Boot 学习系列(08)—自定义servlet、filter及listener
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的filter及listener配置 在传统的Java web项目中,servlet.filter和li ...
- Spring Boot 学习系列(04)—分而治之,多module打包
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 明确功能,各司其职 在一个结构清晰的项目中,一个没有module划分的结构显然不是最佳实践.有人会说可以在同 ...
- Spring Boot 学习系列(序)—Spring Boot
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring Boot? Spring Boot 是由pivotal团队提供的一个基于Spring的全新框架 ...
随机推荐
- Linux下安装MATLAB
Why do I see "Preparing installation files ... Installing ... Finished..." in the terminal ...
- wampserver中php版本的升级
以php5.3.10到5.4.31版本为例: 1. 停止WAMP服务器. 2. 去网站windows.php.net 下载php-5.4.31-Win32-VC9-x86.zip. 不要下载THE ...
- c#,条码
static void Generate2(string text){ BarcodeWriter writer = new BarcodeWriter(); //使用ITF 格式,不能被现在常用的支 ...
- 群里一个高手写的url?传参执行php函数的小程序, 收藏下
<?php // +---------------------------------------------------------------------- // | Copyright ( ...
- 怎么改变Eclipse中项目的运行服务器
eclipse中-->选定项目-->右键-->弹出 Properties for项目名 -->选择server子项-->选择需要的server即可(Always use ...
- pthread_create用法(转)
在转载别人文章之前,说一下 pthread_create(); 创建线程返回值. 正常情况下,创建成功则返回 0 : 如果创建失败 通常返回常见的 错误返回代码为: EAGAIN #define ...
- 【独家】阿里天池IJCAI17大赛第四名方案全解析(附代码)
[独家]阿里天池IJCAI17大赛第四名方案全解析(附代码) https://mp.weixin.qq.com/s?__biz=MzAxMzA2MDYxMw==&mid=2651560625& ...
- Redis 基础操作
[Redis 基础操作] 1.ECHO message. Returns message. 2.PHING Returns PONG if no argument is provided, other ...
- linux 关闭电子邮件传输服务
1.检查sendmail的哪些runlevel开启: chkconfig --list sendmail
- Division of Line Segment
Division of Line Segment /** */ void Line::EqualDivision(int nCount, QLineF fline, QList<QPointF& ...