Log4j2使用笔记
一、maven依赖的配置
<!-- 如果采用log4j2的话,需要下面3个依赖 -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.8.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-jcl -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.8.2</version>
</dependency>
<!-- 如果采用log4j2的话,需要下面3个依赖 -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.8.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.8.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-jcl -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.8.2</version>
</dependency>
二、配置log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出。
因此我们直接设置成OFF
-->
<Configuration status="OFF">
<!-- 配置输出端 -->
<Appenders>
<!-- 输出到控制台 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-level]%d{HH:mm:ss.SSS} [%t] %logger{36} - %msg%n" />
</Console>
<!-- 输出到文件 -->
<!--
name: 输出端的名字
fileName: 指定当前日志文件的位置和文件名称
filePattern: 指定当发生自动封存日志时,文件的转移和重命名规则
这个filePatten结合下面的TimeBasedTriggeringPolicy一起使用,可以实现控制日志按天生成文件.
自动封存日志的策略可以设置时间策略和文件大小策略(见下面的Policies配置)
时间策略:
文件名_%d{yyyy-MM-dd}_%i.log 这里%d表示自动封存日志的单位是天
如果下面的TimeBasedTriggeringPolicy的interval设为1,
表示每天自动封存日志一次;那么就是一天生成一个文件。
文件大小策略:
如果你设置了SizeBasedTriggeringPolicy的size的话,
超过了这个size就会再生成一个文件,这里的%i用来区分的
%d{yyyy-MM-dd}会自动替代为日期,如2017-06-30
-->
<RollingFile name="RollingFileInfo" fileName="D:/log/tax_info.log"
filePattern="D:/log/%d{yyyy-MM-dd}/tax_info_%d{yyyy-MM-dd}_%i.log">
<!-- 只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
<!-- 输出的格式 -->
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
<!--
Policies:自动封存日志策略,表示日志什么时候应该产生新日志,
可以有时间策略和大小策略等,并且:只有满足一个策略,就好生成一个新的文件。
这里使用的是时间和大小都使用了,每隔1天产生新的日志文件
如果果今天的文件大小到了设定的size,则会新生成一个文件,上面的%i就表示今天的第几个文件
-->
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="20MB" />
</Policies>
<!--
DefaultRolloverStrategy属性如不设置,
则默认为最多同一文件夹下7个文件,这里设置了20
-->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</Appenders>
<!-- 配置Loggers -->
<Loggers>
<!--
Logger: 用于指定部分包的日志级别
日志级别局部的会覆盖全局的
比如这里hibernate的级别设为debug,而控制台没有设级别,那么控制台会打印debug级别的日志
而输出到文件这个输出端设置了info级别,那么hibernate的debug级别的日志还是看不了。
所以最终输出的级别和输出端设置的级别是有关系的。
name: 包名
level:日志级别
additivity:是否冒泡,既在当前logger的输出端输出日志后
是否需要在父输出端上输出该日志,默认为 true。
如果设为false,则必须配置AppendRef。
-->
<Logger name="org.hibernate" level="debug" additivity="true" />
<!-- 这个root是配置全局日志级别和输出端功能和老版的log4j中根的配置是一样的 -->
<Root level="info">
<!-- 这里引用上面定义的输出端,千万不要漏了。 -->
<AppenderRef ref="Console" />
<AppenderRef ref="RollingFileInfo" />
</Root>
</Loggers>
</Configuration>
<?xml version="1.0" encoding="UTF-8"?>
<!--
status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出。
因此我们直接设置成OFF
-->
<Configuration status="OFF">
<!-- 配置输出端 -->
<Appenders>
<!-- 输出到控制台 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="[%-level]%d{HH:mm:ss.SSS} [%t] %logger{36} - %msg%n" />
</Console>
<!-- 输出到文件 -->
<!--
name: 输出端的名字
fileName: 指定当前日志文件的位置和文件名称
filePattern: 指定当发生自动封存日志时,文件的转移和重命名规则
这个filePatten结合下面的TimeBasedTriggeringPolicy一起使用,可以实现控制日志按天生成文件.
自动封存日志的策略可以设置时间策略和文件大小策略(见下面的Policies配置)
时间策略:
文件名_%d{yyyy-MM-dd}_%i.log 这里%d表示自动封存日志的单位是天
如果下面的TimeBasedTriggeringPolicy的interval设为1,
表示每天自动封存日志一次;那么就是一天生成一个文件。
文件大小策略:
如果你设置了SizeBasedTriggeringPolicy的size的话,
超过了这个size就会再生成一个文件,这里的%i用来区分的
%d{yyyy-MM-dd}会自动替代为日期,如2017-06-30
-->
<RollingFile name="RollingFileInfo" fileName="D:/log/tax_info.log"
filePattern="D:/log/%d{yyyy-MM-dd}/tax_info_%d{yyyy-MM-dd}_%i.log">
<!-- 只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" />
<!-- 输出的格式 -->
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
<!--
Policies:自动封存日志策略,表示日志什么时候应该产生新日志,
可以有时间策略和大小策略等,并且:只有满足一个策略,就好生成一个新的文件。
这里使用的是时间和大小都使用了,每隔1天产生新的日志文件
如果果今天的文件大小到了设定的size,则会新生成一个文件,上面的%i就表示今天的第几个文件
-->
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="20MB" />
</Policies>
<!--
DefaultRolloverStrategy属性如不设置,
则默认为最多同一文件夹下7个文件,这里设置了20
-->
<DefaultRolloverStrategy max="20"/>
</RollingFile>
</Appenders>
<!-- 配置Loggers -->
<Loggers>
<!--
Logger: 用于指定部分包的日志级别
日志级别局部的会覆盖全局的
比如这里hibernate的级别设为debug,而控制台没有设级别,那么控制台会打印debug级别的日志
而输出到文件这个输出端设置了info级别,那么hibernate的debug级别的日志还是看不了。
所以最终输出的级别和输出端设置的级别是有关系的。
name: 包名
level:日志级别
additivity:是否冒泡,既在当前logger的输出端输出日志后
是否需要在父输出端上输出该日志,默认为 true。
如果设为false,则必须配置AppendRef。
-->
<Logger name="org.hibernate" level="debug" additivity="true" />
<!-- 这个root是配置全局日志级别和输出端功能和老版的log4j中根的配置是一样的 -->
<Root level="info">
<!-- 这里引用上面定义的输出端,千万不要漏了。 -->
<AppenderRef ref="Console" />
<AppenderRef ref="RollingFileInfo" />
</Root>
</Loggers>
</Configuration>

三、java代码中使用log4j2打印日志
public static void main(String[] args) {
Logger logger = LogManager.getLogger(TestSpring.class);
logger.debug("这是debug");
logger.info("这是Info");
logger.error("这是error");
}
public static void main(String[] args) {
Logger logger = LogManager.getLogger(TestSpring.class);
logger.debug("这是debug");
logger.info("这是Info");
logger.error("这是error");
}
Log4j2使用笔记的更多相关文章
- Log4j2 配置笔记(Eclipse+maven+SpringMVC)
Log4j2相关介绍可以百度看下,这里只注重配置Log4j2 能够马上跑起来: 1.pom.xml文件中添加Log4j2的相关Maven配置信息 <!-- log4j2 --> <d ...
- log4j2的配置文件log4j2.xml笔记
一.背景 最近由于项目的需要,我们把log4j 1.x的版本全部迁移成log4j 2.x 的版本,那随之而来的slf4j整合log4j的配置(使用Slf4j集成Log4j2构建项目日志系统的完美解决方 ...
- 笔记:MyBatis 日志显示-log4j2
在ClassPath路径创建log4j2.xml配置文件,增加如下日志配置: <?xml version="1.0" encoding="UTF-8"?& ...
- 学习笔记—log4j2
概念 什么是日志 日志是系统运行过程中的后台输出信息,方便程序员进行系统运行的管控以及Bug的查找. log4j2的概念 log4j2是一个日志输出的插件,专门用来进行日志的管理. Log4j是Apa ...
- log4j2笔记 #04# Appender的三个基本款以及RollingFile的各种示例配置
粗糙笔记,留着备用. 三个基本款分别是ConsoleAppender.FileAppender(以及他的堂哥RandomAccessFileAppender).RollingFileAppender( ...
- log4j2笔记 #02# 启用异步日志
索引 参考 Making All Loggers Asynchronous 第一步,添加相应的disruptor库 第二步,设置系统属性log4j2.contextSelector 第三步,检验! 参 ...
- Spring Boot 笔记 (2) - 使用 log4j2 记日志
日志框架的选用 Spring 使用的默认日志框架是 logback, 默认情况下会采取默认的 autoconfiguration; 即便想对日志的一些配置进行修改也比较方便, 详细可以参考: Spri ...
- log4j2笔记 #03# PatternLayout
该类的目标是格式化LogEvent并返回(字符串)结果.结果的格式取决于具体的模式字符串(pattern string).这里的模式字符串与c语言中printf函数的转换模式非常相似.模式字符串由“转 ...
- log4j2笔记 #01# Architecture
索引 Architecture Main Components Logger Hierarchy LoggerContext Configuration Logger LoggerConfig Fil ...
随机推荐
- 微信小程序-06-详解介绍.js 逻辑层文件-注册页面
上一篇介绍的是 app.js 逻辑层文件中注册程序,对应的每个分页面都会有的 js 文件中 page() 函数注册页面 微信小程序-06-详解介绍.js 逻辑层文件-注册页面 宝典官方文档: http ...
- JAVA学习笔记:注释、变量的声明和定义、
本文内容: 注释 变量的声明和定义 成员变量和局部变量 首发时间:2018-03-16 15:59 注释: 单行注释:// 多行注释:/* - */ 变量: 变量是内存中的一个存储区域,变量的定义就是 ...
- 利用trie树实现前缀输入提示及trie的python实现
代码来自https://github.com/wklken/suggestion/blob/master/easymap/suggest.py 还实现了缓存功能,搜索某个前缀超过一定次数时,进行缓存, ...
- Centos7下搭建SVN服务,本地提交代码自动同步到WEB目录
1.安装SVN服务[root@bogon ~]# yum -y install subversion 2.查看svnserve安装目录[root@bogon ~]# whereis svnserves ...
- 使用 PsPing & PaPing 进行 TCP 端口连通性测试
PsPing & PaPing 介绍 通常,我们测试数据包能否通过 IP 协议到达特定主机时,都习惯使用 ping 命令.工作时 ping 向目标主机发送一个 IMCP Echo 请求的数据包 ...
- Kali下Ettercap 使用教程+DNS欺骗攻击
一.Ettercap 使用教程 EtterCap是一个基于ARP地址欺骗方式的网络嗅探工具.它具有动态连接嗅探.动态内容过滤和许多其他有趣的技巧.它支持对许多协议的主动和被动分析,并包含许多用于网络和 ...
- 【18】如何把数据存储到MongoDB数据库
如何把数据存储到MongoDB数据库 时间:2018.10.31 edit by :北鼻 一.mongoDB环境安装 需要使用mongoDB数据库的话需要安装环境, ...
- 为什么MySQL数据库索引选择使用B+树?
在进一步分析为什么MySQL数据库索引选择使用B+树之前,我相信很多小伙伴对数据结构中的树还是有些许模糊的,因此我们由浅入深一步步探讨树的演进过程,在一步步引出B树以及为什么MySQL数据库索引选择使 ...
- Linux基础第六课——grep|awk|sort|uniq
管道符 | 前面的输出作为后面的输入 grep 可以理解为正则表达式 grep [参数] 文件名 -c 打印符合要求的行数 -v 打印不符合要求的行 -n 在输出符合要求的行的同时连同行号一起输出 - ...
- 什么是CPU密集型、IO密集型?
CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘.内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/ ...