java集成log4j2
java集成log4j2
log4j2功能较好,可配置异步日志,无垃圾模式,等等,现在主流为slf4j log4j2实现日志框架
导入maven坐标
<!-- log4j2日志门面 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.1</version>
</dependency>
<!-- log4j2日志实现 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.1</version>
</dependency>
配置log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- 框架默认级别为warn 自动加载配置文件的间隔时间,不低于5s,修改配置文件后无需重新发动应用,可以自动加载-->
<configuration status="debug" monitorInterval="5">
<properties>
<property name="LOG_HOME">D:/logs</property>
</properties>
<!--先定义所有的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>
<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用 -->
<!--append为TRUE表示消息增加到指定文件中,false表示消息覆盖指定的文件内容,默认值是true -->
<File name="log" fileName="${LOG_HOME}/log4j2.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>
<!--添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别 onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝 -->
<File name="ERROR" fileName="${LOG_HOME}/error.log">
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%d{yyyy.MM.dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>
<!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
<RollingFile name="RollingFile" fileName="${LOG_HOME}/roll.log" filePattern="D:/logs/$${date:yyyy-MM}/web-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<Policies>
<!-- 发动时自动生成新文件 -->
<OnStartupTriggeringPolicy />
<SizeBasedTriggeringPolicy size="10MB"/>
<!-- 按时间节点拆分 -->
<TimeBasedTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="30"/>
</RollingFile>
<!-- 异步日志 -->
<!-- <Async name="Async">
<appender-ref ref="RollingFile"/>
</Async> -->
</appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效 -->
<loggers>
<!-- 自定义异步logger对象 -->
<!-- includelocation 记录行号
additivity 继承rootloggger
-->
<AsyncLogger name="cn.sp" level="trace" includelocation="false" additivity="false">
<AppenderRef ref="RollingFile" />
</AsyncLogger>
<root level="trace">
<!-- <appender-ref ref="Async"/> -->
<appender-ref ref="Console"/>
<appender-ref ref="ERROR" />
<appender-ref ref="log"/>
</root>
</loggers>
</configuration>
测试
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.junit.Test;
public class TestLog4j2 {
public static final Logger log = LogManager.getLogger(TestLog4j2.class);
@Test
public void testLog4j2() {
log.trace("log4j2日志输出:This is trace message."); // 记录debug级别的信息
log.debug("log4j2日志输出:This is debug message."); // 记录info级别的信息
log.info("log4j2日志输出:This is info message."); // 记录error级别的信息
log.error("log4j2日志输出:This is error message.");
}
}
异步日志
1.导入异步日志的maven坐标依赖
<!-- 异步日志 -->
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.4</version>
</dependency>
2.如上配置文件所示,可配置异步日志async
注意不要记录代码行号,影响效率。
3.也可配置uan局异步日志
在resource目录下加入log4j2.component.properties
配置:
#uan局异步配置
#Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
使用slf4j作为日志门面来配置log4j2
1.导入slf4j maven坐标
<!-- slf4j日志门面 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.26</version>
</dependency>
<!-- slf4j-log4j2的适配绑定 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.9.1</version>
</dependency>
2.测试
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestSlf4jLog4j2 {
public static final Logger log = LoggerFactory.getLogger(TestSlf4jLog4j2.class);
@Test
public void testSlf4jLog4j2() {
log.error("error");
log.warn("warn");
log.info("info");
log.debug("debug");
log.trace("trace");
}
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgighci
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13