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的全新框架 ...
随机推荐
- leetcode111
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNo ...
- windows 关机 重启 命令
关机 shutdown -s -t 0 重启 shutdown -r -t 0 重启电脑windows 立即关机 shutdown -s 三十分钟后关机 shutdown -s -t 30 举例说明一 ...
- Richview 首页 奇偶页 不同页眉页脚
首页 奇偶页 不同页眉页脚 ScaleRichView v6.0 Different headers and footers for the first page, for odd and even ...
- C++Builder 也有StringBuilder
System::Sysutils::TStringBuilder *sb = new TStringBuilder; sb->Append("ww"); sb-& ...
- Maven配置本地仓库
当我们在myeclipse中update maven时可能会报错User setting file does not exist C:\Users\lenevo\.m2\setting.xml,以致于 ...
- ubuntu 安装google输入法
第五步:通常情况下,IBus图标(一个小键盘)会出现在桌面右上角的任务栏中.有时候这个图标会自行消失,可使用以下命令,找回消失的IBus图标: ibus-daemon -drx 不建议用googl ...
- 前端开发之jQuery位置属性和筛选方法
主要内容: 1.jQuery的位置属性及实例 (1)位置属性 (2)实例 --- 仿淘宝导航栏 2.jQuery的筛选方法及实例 (1)筛选方法 (2)实例一:嵌套选项卡 (3)实例二:小米官网滑动 ...
- js 正则积累
//1.验证非空 if (v[j] == "notNull" && $.trim(f.value) == "") { alert(input.a ...
- pyqt5 sip 段错误问题
在我装labelImg工具时,装了pyqt5,而后发现缺少sip模块,又pip安装上后,启动labelImg,报段错误. 经查资料,很容易发现,是pyqt5与sip版本不匹配造成的,具体缘由,可参看: ...
- PHP 将HTML转成PDF文件,HTML 转word,Word 转Html
html转 PDF 用MPDF ,Word转Html 纯PHP的方法暂未找到Word直接转PDF的方法 可以使用 LibreOffice 6.1 (Liunx,win) 皆可使用 Html转成PD ...