Log4j 2 maven依赖jar,Log4j 2 从2.4版本开始使用JDK7编译
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.3</version> </dependency> <!--使用slf4j封装日志API,如果不使用可以不用引用,log4j2最低要求1.6版本--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.5</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.3</version> </dependency> <!--异步日志,不使用异步可以不引用--> <dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> <version>3.0.0</version> </dependency>
log4j2.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <configuration status="error"> <Properties> <Property name="logFilePath">D:\\logs</Property> <!-- 一小时一个日志文件 --> <Property name="interval">1</Property> <!-- 业务日志输出格式 --> <Property name="selfPattern">%m%n</Property> <!-- 其中%t参数表示当前线程ID --> <Property name="ConversionPattern">[oi-service-${sys:dubbo.protocol.port}]%d[%t][%p] - %m - [%l]%n</Property> </Properties> <appenders> <!-- 输出到控制台 --> <Console name="Console" target="SYSTEM_OUT"> <ThresholdFilter level="info" onMatch="ACCEPT" /> <PatternLayout pattern="[oi]%d [%p] - %m [%l] %n" /> </Console> <RollingFile name="debug" fileName="${logFilePath}/debug-${sys:dubbo.protocol.port}.log" filePattern="${logFilePath}/debug-${sys:dubbo.protocol.port}.log.%d{yyyy-MM-dd-HH}"> <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="${ConversionPattern}" /> <TimeBasedTriggeringPolicy interval="1" /> </RollingFile> <RollingFile name="info" fileName="${logFilePath}/info-${sys:dubbo.protocol.port}.log" filePattern="${logFilePath}/info-${sys:dubbo.protocol.port}.log.%d{yyyy-MM-dd-HH}"> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="${ConversionPattern}" /> <TimeBasedTriggeringPolicy interval="${interval}" /> </RollingFile> <RollingFile name="warn" fileName="${logFilePath}/warn-${sys:dubbo.protocol.port}.log" filePattern="${logFilePath}/warn.log-${sys:dubbo.protocol.port}.%d{yyyy-MM-dd-HH}"> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="${ConversionPattern}" /> <TimeBasedTriggeringPolicy interval="${interval}" /> </RollingFile> <RollingFile name="error" fileName="${logFilePath}/error-${sys:dubbo.protocol.port}.log" filePattern="${logFilePath}/error-${sys:dubbo.protocol.port}.log.%d{yyyy-MM-dd-HH}"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="${ConversionPattern}" /> <TimeBasedTriggeringPolicy interval="${interval}" /> </RollingFile> <RollingFile name="inf" fileName="${logFilePath}/inf-${sys:dubbo.protocol.port}.log" filePattern="${logFilePath}/inf-${sys:dubbo.protocol.port}.log.%d{yyyy-MM-dd-HH}"> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="${selfPattern}" /> <TimeBasedTriggeringPolicy interval="${interval}" /> </RollingFile> <RollingFile name="query" fileName="${logFilePath}/query-${sys:dubbo.protocol.port}.log" filePattern="${logFilePath}/query-${sys:dubbo.protocol.port}.log.%d{yyyy-MM-dd-HH}"> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="${selfPattern}" /> <TimeBasedTriggeringPolicy interval="${interval}" /> </RollingFile> <Async name="Async"> <AppenderRef ref="Console" /> </Async> </appenders> <loggers> <!--自定义日志输出, 使用异步日志,log4j2建议业务日志使用同步,程序猿使用的日志使用异步 --> <asyncLogger name="inf" level="info" additivity="false"> <appender-ref ref="inf" /> </asyncLogger> <logger name="query" level="info" additivity="false"> <appender-ref ref="query" /> </logger> <logger name="org" level="error" additivity="false"> </logger> <logger name="com.opensymphony.xwork2" level="off" additivity="false"> </logger> <logger name="com.alibaba.dubbo" level="error" additivity="false"> </logger> <asyncRoot level="trace" includeLocation="true"> <appender-ref ref="info" /> <appender-ref ref="error" /> <appender-ref ref="warn" /> <appenderRef ref="Console" level="error" /> </asyncRoot> </loggers> </configuration>
log4j2异步日志和log4j1性能比较,使用ab,并发10000,100000次请求:
log4j2
log4j1
其中log4j2的性能是log4j1的10倍。
相关推荐
**标题:“Log4j2使用入门”** **描述:** 这篇博客主要介绍了如何开始使用Log4j2,Log4j2是Apache的一个开源日志框架,它提供了灵活的日志记录功能,比其前一代Log4j更加高效和功能强大。通过学习Log4j2,开发者...
Log4j2 结合 Slf4j 配置使用 Log4j2 是一个功能强大且广泛使用的日志记录工具,它提供了灵活的日志记录机制和高性能的日志记录能力。Slf4j 则是一个简单的日志记录门面,提供了统一的日志记录接口。今天,我们将...
**Log4j2使用案例** 在Java开发中,日志记录是不可或缺的一部分,它帮助开发者追踪程序运行状态、定位问题和进行性能分析。Log4j2作为Apache的一个顶级项目,是Log4j的升级版,提供了更高效、更灵活的日志处理能力...
**Log4j2使用教程** Log4j2是一款广泛应用于Java环境的日志记录框架,它在Log4j的基础上进行了性能优化和功能增强。本教程将详细介绍Log4j2的安装、配置以及如何在项目中使用它来记录日志信息。 **一、Log4j2的...
最新版log4j 2的使用教程,简明扼要,非常好用
然后使用Logger.getLogger()方法获取日志记录器,而Log4j2需要import org.apache.logging.log4j.Level、org.apache.logging.log4j.LogManager和org.apache.logging.log4j.Logger,使用LogManager.getLogger()方法...
对于使用Log4j2的若依框架或者其他任何依赖Log4j2的项目,升级到2.16.0或更高版本是至关重要的,因为不进行更新可能会使系统暴露在严重的安全风险之下。 在描述中,“若依框架”是一个基于Spring Boot的开源企业级...
9. **Layouts的广泛适用性**:Log4j2的Layouts不仅可以应用于使用`OutputStream`写入日志的Appender,还可以应用于所有类型的Appender。 10. **优化的并发支持**:Log4j2利用Java 5提供的并发特性,能够在较低级别...
4. **编写代码**:在Java代码中,你需要按照正常的log4j2使用方式调用日志记录方法。Log4j2会根据配置自动将日志发送到MongoDB。 5. **测试和优化**:集成完成后,通过运行应用程序并查看MongoDB中的日志记录来验证...
默认情况下,Log4j2使用同步模式记录日志,即每个日志事件都会阻塞直到写入完成。然而,通过启用异步日志模式,Log4j2会将日志事件放入一个队列,然后由一个单独的后台线程处理这些事件,从而避免了主线程的阻塞,...
Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...
针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...
Log4j和Log4j2是两种广泛使用的Java日志框架,它们提供了灵活的日志配置和高性能的日志处理能力。本文将详细介绍如何在SpringBoot项目中配置Log4j和Log4j2。 ### SpringBoot与Log4j Log4j是Apache的一个开源项目,...
在使用 Log4j2 之前,需要在 Maven 项目中引入 Log4j2 的依赖。我们可以在 pom.xml 文件中添加以下依赖项: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-web <groupId>org....
分别有disruptor-3.3.4.jar(Log4j2异步日志的底层实现)、log4j-api-2.19.0.jar(log4j门面)、log4j-core-2.19.0.jar(log4j实现)、log4j-slf4j-impl-2.19.0.jar(SLF4J与Log4j绑定)、slf4j-api-1.7.30.jar(SLF...
Log4j2作为Java领域广泛使用的日志框架,提供了丰富的功能来满足这一需求。本文将详细介绍如何使用Log4j2实现日志数据脱敏。 一、Log4j2简介 Log4j2是Apache软件基金会开发的日志框架Log4j的升级版,它具有更高的...
Log4j2使用XML、JSON或YAML格式的配置文件,使得日志配置更为直观和灵活。你可以根据需要设置不同级别的日志输出,如DEBUG、INFO、WARN、ERROR等,甚至可以为不同的类或方法定制日志级别。 4. **过滤器和Lookup**:...
为了应对这一挑战,开发者们推出了Log4j2检测工具,如"Log4j2_detect_gui.zip",本文将详细介绍这款工具的使用及Log4j漏洞的相关知识。 首先,我们要明白Log4j2Detect是一款用于检测Log4j漏洞的图形化界面工具,由...
6. **事件数据结构**:Log4j2使用LogEvent对象封装日志信息,使其更易于处理和过滤。 7. **日志级别的优先级**:Log4j2允许设置每个Logger的优先级,便于控制日志输出的详细程度。 8. **自动重加载配置**:如果...
Log4j2,一个广泛使用的Java日志框架,最近曝出的重大安全漏洞(CVE-2021-44228,被称为Log4Shell)引起了全球的关注。这个漏洞允许攻击者通过精心构造的日志输入执行远程代码,从而对系统造成严重威胁。为了解决这...