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 ...
随机推荐
- 安卓开发_计时器(Chronometer)的简单使用
计时器控件(Chronometer)是一个可以显示从某个起始时间开始一共过去多长时间的本文. 继承自TextView,以文本的形式显示时间内容 该组件有五个方法 1.setBase(): \\用于设置 ...
- Linux下修改IP、DNS、路由命令行设置
本文最后修改时间:20180313 一.快速修改,重启后设置就没了 ifconfig eth0 192.168.1.22 netmask 255.255.255.0 up route add defa ...
- 安装VisualSVN Server 报"Service 'VisualSVN Server' failed to start. Please check VisualSVN Server log in Event Viewer for more details"错误.原因是启动"VisualSVN Server"失败
安装VisualSVN Server 报"Service 'VisualSVN Server' failed to start. Please check VisualSVN Server ...
- WPF:验证登录后关闭登录窗口,显示主窗口的解决方法
http://www.27ba.com/post/145.html WPF:验证登录后关闭登录窗口,显示主窗口的解决方法 最近想做一个基于Socket的通讯工具,想模仿QQ那样,需要先登录,登录成功后 ...
- C#使用Aforge调用摄像头拍照
一. 新建一个Winform项目 二.使用Nuget添加引用 安装下图中红色框住的两个程序包 安装完后发现安装了如下图的程序包,这是因为上述两个程序包存在对其它程序包的依赖. 三.编写程序 1. 窗体 ...
- MySQL参数log_bin_trust_function_creators介绍-存储过程和复制
MySQL的有个参数log_bin_trust_function_creators,官方文档对这个参数的介绍.解释如下所示: log_bin_trust_function_creators Comma ...
- 字典Key值为变量
m='aaa4a' d = dict(name=m) print d['name']
- 辽宁移动宽带体验及魔百盒M101s-2刷机
一.背景 坐标:辽宁 某城,移动宽带100M. 设备:移动赠送,华为光猫一只,魔百盒M101s-2电视盒子 一只,据安装人员说这个魔百盒是移动自己开发设计的. 二.上网体验 上网:浏览一般网站没问题. ...
- IDEA 如何查看一个类里面的所有方法
快捷键:Alt+7
- Alpha冲刺 - 事后诸葛亮
Alpha冲刺 - 事后诸葛亮 Alpha完成情况表 Stardust(安卓端) 模块 预期计划 现实进展 完成度 登录/注册 登录时,从服务器拉取的数据并同步数据库.获取的数据有:用户名.密码.记录 ...