96SEO 2026-02-19 18:54 0
2是对Log4j的升级版参考了logback的一些优秀的设计并且修复了一些问题因此带

logback中Appender中的异常不会被应用感知到但是在log4j2中提供了一些异
和logback都具有很明显的性能提升后面会有官方测试的数据。
自动重载配置参考了
logback的设计当然会提供自动刷新参数配置最实用的就是我们在生产
log4j2在大部分情况下都可以使用其设计的一套无垃圾机制避免频繁的日志收集
https://logging.apache.org/log4j/2.x/
Log4j2最牛的地方在于异步输出日志时的性能表现Log4j2在多线程的环境下吞吐量与Log4j和
Logback的比较如下图。
下图比较中Log4j2有三种模式1全局使用异步模式2部分Logger采用异步模式3异步Appender。
可以看出在前两种模式下Log4j2的性能较之Log4j和Logback有很大的
垃圾收集暂停是延迟峰值的常见原因并且对于许多系统而言花费大量精力来控制这些暂停。
许多日志库包括以前版本的Log4j在稳态日志记录期间分配临时对象如日志事件对象字符串
字符数组字节数组等。
这会对垃圾收集器造成压力并增加GC暂停发生的频率。
从版本2.6开始默认情况下Log4j以“无垃圾”模式运行其中重用对象和缓冲区并且尽可能不分配临
时对象。
还有一个“低垃圾”模式它不是完全无垃圾但不使用ThreadLocal字段。
2.6中的无垃圾日志记录部分通过重用ThreadLocal字段中的对象来实现部分通过在将文本转换
从图中可以看出log4j2的性能是完全吊打其他日志框架的而且log4j2的异步日志功能非常的强大可以大大的减少日志系统对业务系统的负担。
基于这些功能所以现在主流的日志开发架构就是SLF4JLog4j2这个组合所以这个log4j2这个日志框架是必须要学会的
springboot框架在企业中的使用越来越普遍springboot日志也是开发中常用的日志系统。
springboot
默认就是使用SLF4J作为日志门面logback作为日志实现来记录日志。
所以如果我们要在springboot项目中使用Log4j2需要内置的日志框架给去除。
分成三步第一移除默认的日志框架第二加入log4j2的依赖启动器第三编写配置文件
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId!--排除默认spring-boot-starter-logging启动器--exclusionsexclusiongroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-logging/artifactId/exclusion/exclusions
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-log4j2/artifactId
namelog.path./dev/PropertyProperty
namelog.nameforlan-log4j2/PropertyProperty
pattern${file.pattern}/ThresholdFilter
fileName${log.path}/${log.name}.info.logfilePattern${log.path}/%d{yyyy-MM-dd}/${log.name}.info.%d{yyyy-MM-dd}-%i.logPatternLayout
pattern${file.pattern}/LevelMatchFilter
fileName${log.path}/${log.name}.error.logfilePattern${log.path}/%d{yyyy-MM-dd}/${log.name}.error.%d{yyyy-MM-dd}-%i.logPatternLayout
pattern${file.pattern}/LevelMatchFilter
max30//RollingFile/Appenders!--
LoggerFactory.getLogger(Slf4jTest.class);Testpublic
{//打印日志信息LOGGER.error(error);LOGGER.warn(warn);LOGGER.info(info);LOGGER.debug(debug);LOGGER.trace(trace);//
e.printStackTrace();LOGGER.info(出现异常,
}出现入上图的结果就代表log4j2就配置成功了主要注意那个dev的日志文件是否生成这个日志文件是在前面的配置文件中配置的。
到这里log4j2的基本使用其实已经可以实现了对于一些小的项目这样子配置就可以了但对于那些大型项目log4j2还可以更加强大那就是使用它的异步日志功能
logl4j2最大的特点就是异步日志其性能的提升主要也是从异步日志中受益我们来看看如何使用
提供了两种实现日志的方式一个是通过AsyncAppender一个是通过AsyncLogger分别对应
log4j2的全局异步AsyncLogger性能最好第二个是混合异步AsyncLogger性能最差的是AsyncAppender(和同步日志相比没有什么性能提升。
和logback性能一样)
如果使用异步日志全局异步AsyncLogger、混合异步AsyncLogger、AsyncAppender不要同时使用。
否则会使用性能较低的一种异步方式
AsyncAppender这种使用方式较为简单只需要在我们上述的Appender中加入以下标签即可
monitorInterval5propertiesproperty
nameLOG_HOMEC:/Users/dell/Desktop/java11Test/logs/property/propertiesAppendersFile
fileName${LOG_HOME}/myFile.logPatternLayout
refFile//Async/AppendersLoggersRoot
的重头戏也是官方推荐的异步方式。
它可以使得调用Logger.log返回的
就是所有的日志都异步的记录在配置文件上不用做任何改动只需要添加一个
Log4jContextSelectororg.apache.logging.log4j.core.async.AsyncLoggerContextSelector
就是你可以在应用中同时使用同步日志和异步日志这使得日志的配置方式更加
!--logger定义--Loggers!--自定义异步logger对象includeLocation
将以上配置配置到我们之前的log4j2.xml配置文件中将之前的logger定义替换。
此时我们com.itcats日志是异步的root日志是同步的。
如果使用异步日志AsyncAppender、AsyncLogger和全局日志不要同时出现。
性能会和
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback