1.丢数据这种情况少,可以用来做审计功能。而且自身内部报的exception会被发现,但是logback和log4j不会。
2.log4j2使用了disruptor技术,在多线程环境下,性能高于logback等10倍以上。
3.(garbage free)之前的版本会产生非常多的临时对象,会造成GC频繁,log4j2则在这方面上做了优化,减少产生临时对象。尽可能少的GC
4.利用插件系统,使得扩展新的appender,filter,layout等变得容易,log4j不可以扩展 插件????
5.因为插件系统的简单性,所以在配置的时候,可以不用具体指定所要处理的类型。class
6.可以自定义level
7.Java 8 lambda support for lazy logging
8.Support for Message objects
9.对filter的功能支持的更强大
10.系统日志(Syslog)协议supports both TCP and UDP
11.利用jdk1.5并发的特性,减少了死锁的发生。
Socket LogEvent SerializedLayout
kafka queue
一个基本的Log4j2.xml配置:
<?xml version="1.0" encoding="UTF-8"?> <!-- 在运行时,可以动态修改配置文件,不用重启服务,在固定时长更新一次配置文件。monitorInterval设置更新配置文件时长, 单位为seconds , min senconds >= 5secondes --> <Configuration monitorInterval="30" > <Properties> <Property name="log.path">E:\log4j2_log\</Property> </Properties> <Appenders> <!-- 控制台appdener--> <Console name="STDOUT" target="SYSTEM_OUT"> <PatternLayout charset="UTF-8" pattern="%m%n"/> </Console> <!-- File appdener--> <File name="MyFile" fileName="logs/app.log" bufferedIO="true" > <PatternLayout> <Charset>UTF-8</Charset> <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> </PatternLayout> </File> <!-- RandomAccessFile 性能高于 File--> <RandomAccessFile name="MyFile" fileName="logs/RandomAccessFile.log" > <PatternLayout> <Charset>UTF-8</Charset> <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> </PatternLayout> </RandomAccessFile> <!--<RollingFile></RollingFile>--> <!-- 注意:一般情况下都使用RollingRandomAccessFile 。 RollingRandomAccessFile可以按照日志名称的格式进行定期备份,拥有一定的备份策略。 1.是否压缩备份日志:直接在filePattern属性的文件名称最后加对应的压缩后缀,如gzip压缩用 .gz --> <RollingRandomAccessFile name="RollingRandomAccessFile" fileName="logs/RollingRandomAccessFile.log" filePattern="logs/RollingRandomAccessFile-%d{yyyy-MM-dd}-%i.log.gz"> <PatternLayout> <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> </PatternLayout> <!-- 备份策略:满足其中一个就可以启动备份--> <Policies> <!-- interval 多久执行一次备份,单位为 RollingRandomAccessFile的属性filePattern中%d{yyyy-MM-dd}的最小时间单位,此处是天--> <TimeBasedTriggeringPolicy interval="1" modulate="true"/> <SizeBasedTriggeringPolicy size="250 MB"/> </Policies> <!-- 默认的备份策略:max="7"表示最多只保留7份日志,fileIndex属性是在拥有多个备份日志的时候,命令是以递增的数为文件名,max值时值大的文件是最新的内容,min值时值大的是最久的内容--> <DefaultRolloverStrategy fileIndex="max" max="7"> <!-- 删除指定目录下60天之前的日志--> <Delete basePath="${log.path}" maxDepth="2"> <IfFileName glob="*/app-*.log.gz" /> <IfLastModified age="60d" /> </Delete> </DefaultRolloverStrategy> </RollingRandomAccessFile> <!-- 异步 appder ,使用的是ArrayBlocingQueue --> <Async name="Async"> <AppenderRef ref="MyFile"/> </Async> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="MyFile"/> </Root> <!-- logger additivity属性:如果设置为true(默认值)则log会被打印两次,这里的logger和root--> <Logger name="com.foo.bar.MyApp" level="info" additivity="true"> <appender-ref ref="RandomAccessFile"/> </Logger> <!-- 异步 logger:使用了disruptor类库,代替Jdk中的queue,性能提高很多 includeLocation属性是指layout中的 %C or $class, %F or %file, %l or %location, %L or %line, %M or %method,异步logger默认为false,如果设置为true,会影响logger的性能 --> <AsyncLogger name="com.foo.test" level="info" additivity="false" includeLocation="false"> <appender-ref ref="log4j2test"/> <appender-ref ref="STDOUT"/> </AsyncLogger> </Loggers> </Configuration>
使用文档: 文档下载
用户手册:下载
官网 http://logging.apache.org/log4j/2.x/
相关推荐
Log4j只需要引入一个JAR包,即log4j.jar,而Log4j2则需要引入两个核心JAR包,即log4j-core.jar和log4j-api.jar。大家可以发现,Log4j和Log4j2的包路径是不同的,Apache为了区分,包路径都更新了。 文件渲染 Log4j...
在2021年底,一个重大的安全漏洞(CVE-2021-44228)被发现在Log4j2的早期版本中,这个漏洞被称为“Log4Shell”。攻击者可以利用这个漏洞通过精心构造的输入来执行任意代码,对系统造成严重威胁。 标题中提到的“log...
10. **优化的并发支持**:Log4j2利用Java 5提供的并发特性,能够在较低级别上执行锁定操作,有效避免了Log4j 1.x中出现的死锁问题。 ### Log4j2与Log4j效率对比 #### 测试环境与方法 为了准确评估Log4j2与Log4j...
Log4j2 配置模板学习笔记 Log4j2 是 Java 语言中一种流行的日志记录工具,它提供了灵活的日志记录管理功能。...*可扩展性强:Log4j2 提供了非常强的可扩展性,可以根据需要添加新的 appender 和配置。
### log4j中文手册知识点概览 #### 1. 简介 - **概述**:日志记录在软件开发中扮演着至关重要的角色。它不仅帮助开发者追踪问题,还能在生产环境中收集运行数据用于分析。传统的日志记录方式如`System.out.println...
针对Log4j 2 远程代码执行漏洞,需要用到的升级资源包,适用于maven资源库,包括log4j,log4j-core,log4j-api,log4j-1.2-api,log4j-jpa等全套2.15.0 maven资源库jar包。如果是maven本地仓库使用,需要将zip包解压...
分别有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...
Log4j、Log4j2和Fastjson的安全性问题在过去曾引起广泛关注,例如Log4j2的CVE-2021-44228(也被称为Log4Shell漏洞),这是一个远程代码执行漏洞,影响了许多使用Log4j2的系统。这个插件可能就是为了检测和利用这些...
Log4j2作为Log4j的升级版,提供更好的性能和更丰富的特性,如异步日志记录,JSON布局,以及可插拔的日志配置。 #### 配置Log4j2 1. **添加依赖**:在`pom.xml`中,添加Log4j2的依赖。 ```xml <groupId>org....
Log4j是Apache的一个开源项目,...总的来说,Log4j提供了一套完整的日志解决方案,不仅能够满足基本的日志记录需求,还支持高级特性如日志过滤、文件管理和分布式日志收集,使得日志管理在各种复杂环境中都能游刃有余。
此外,手册还可能涉及自定义布局、过滤器、触发策略等高级特性,这些功能使得log4j能够适应各种复杂的需求。例如,通过使用PatternLayout,你可以自定义日志信息的输出格式;使用Filters可以进一步筛选要记录的日志...
Log4j2 结合 Slf4j 配置使用 Log4j2 是一个功能强大且广泛使用的日志记录工具,它提供了灵活的日志记录机制和高性能的日志记录能力。Slf4j 则是一个简单的日志记录门面,提供了统一的日志记录接口。今天,我们将...
apache下载太慢,特搬到国内下载。修复log4j漏洞log4j2下载最新log4j2.16.0下载
Log4j 2是Log4j的下一代版本,它引入了大量新特性,包括异步日志记录、可插拔的日志格式化器、动态配置以及丰富的API。相较于Log4j 1.x,Log4j 2不仅在性能上有所增强,而且在用户体验和安全性上都有显著改进。 2....
6. **持续监控**: 设置定期扫描,确保新的Log4j2引入不会引入新的安全问题。 **总结** Log4j2漏洞检测工具是保障系统安全的重要工具,它可以快速、准确地定位潜在的安全风险,并提供有效的修复建议。对于任何使用...
这个压缩包包含的两个关键文件——`log4j-api-2.11.1.jar`和`log4j-core-2.11.1.jar`是Log4j2框架的核心组件。 1. **log4j-api-2.11.1.jar**:这个文件提供了Log4j2的API接口。开发者主要通过这些接口来与Log4j2...
3. **配置Tomcat**:在`$CATALINA_HOME/lib`目录下添加`log4j-api.jar`和`log4j-slf4j-impl.jar`,这将使Tomcat使用Log4j2作为其内部的日志系统。 4. **排除其他日志实现**:确保你的应用中没有引入其他的日志实现...
Log4j2的设计目标是提供灵活的日志记录方式,包括异步日志记录、动态配置、插件架构等特性,使得它在性能和可扩展性方面优于其他日志框架。 二、Spring Boot与Log4j2的结合 Spring Boot通过starter机制简化了第三...