返回顶部
首页 > 资讯 > 精选 >log4j2中日志异步打印的示例分析
  • 930
分享到

log4j2中日志异步打印的示例分析

log4j2 2023-05-30 23:05:00 930人浏览 泡泡鱼
摘要

这篇文章给大家分享的是有关log4j2中日志异步打印的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。log4j2支持日志的异步打印,日志异步输出的好处在于,使用单独的进程来执行日志打印的功能,可以提高日志

这篇文章给大家分享的是有关log4j2中日志异步打印的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

log4j2支持日志的异步打印,日志异步输出的好处在于,使用单独的进程来执行日志打印的功能,可以提高日志执行效率,减少日志功能对正常业务的影响。

异步日志在程序的classpath需要加载disruptor-3.0.0.jar或者更高的版本。

Asynchronous Loggers是一个新增特性在Log4j 2 ,可以实现完全异步也可以和同步混合使用,还可以只异步化Appender,以提升系统性能,官方数据显示混合没有完全异步化效果好。

1,完全异步模式:

这种异步日志方式,不需要修改原来的配置文件,Logger仍然使用<root> and <logger>

只需要在主程序代码开头,加一句系统属性的代码:

System.setProperty("Log4jContextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");

或者设置启动参数:

DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector

2,异步和非异步混合输出模式

在配置文件中Logger使用<asyncRoot> 或 <asyncLogger>,而且<asyncRoot> 或 <asyncLogger>可以和<root> 或 <logger>混合使用。

<?xml version="1.0" encoding="UTF-8"?><!-- No need to set system property "Log4jContextSelector" to any valuewhen using <asyncLogger> or <asyncRoot>. --><Configuration status="WARN"><Appenders><!-- Async Loggers will auto-flush in batches, so switch off immediateFlush. --><RandoMaccessFile name="RandomAccessFile" fileName="asyncWithLocation.log"immediateFlush="false" append="false"><PatternLayout><Pattern>%d %p %class{1.} [%t] %location %m %ex%n</Pattern></PatternLayout></RandomAccessFile></Appenders><Loggers><!-- pattern layout actually uses location, so we need to include it --><AsyncLogger name="com.foo.Bar" level="trace" includeLocation="true"><AppenderRef ref="RandomAccessFile"/></AsyncLogger><Root level="info" includeLocation="true"><AppenderRef ref="RandomAccessFile"/></Root></Loggers></Configuration>

这里需要注意的是,如果使用<asyncRoot> 或 <asyncLogger>,includeLocation="true"是必须要设置才会有类路径等一些信息打印出来。

3,只异步化Appender

在<Appenders>标签里增加如下<Async>标签

<Async name="asyncAppender" includeLocation="true"> <AppenderRef ref="RandomAccessFile"/></Async>

然后在<Root>或者<Logger>标签中引用asyncAppender即可,这里includeLocation是增加在<Async>标签中的。

<Root level="info"><AppenderRef ref="RandomAccessFile"/></Root>

无论是完全异步模式还是混合模式,在Appender标签中,immediateFlush属性无论为true或者false,效果都是和设置false是一样的。

4,性能对比

完全异步 > 混合模式 > 只异步化Appender > 同步

5,疑问

使用混合异步模式进行多线程写日志测试的时候,偶尔会出现日志没有写完的情况。是不是主线程执行完了,不会等待写日志的线程执行完,就把进程给停掉了? 在主线程的最后sleep几秒,就没有再出现日志写不完的情况了。

感谢各位的阅读!关于“log4j2中日志异步打印的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: log4j2中日志异步打印的示例分析

本文链接: https://lsjlt.com/news/222272.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • log4j2中日志异步打印的示例分析
    这篇文章给大家分享的是有关log4j2中日志异步打印的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。log4j2支持日志的异步打印,日志异步输出的好处在于,使用单独的进程来执行日志打印的功能,可以提高日志...
    99+
    2023-05-30
    log4j2
  • mybatis log4j2打印sql+日志实例代码
    目录前言基于maven的springboot第二种 jdk6,普通jar包的springmvc总结前言 将采用slf+log4j2方式进行打印日志,以下用两种方式,一种基于maven...
    99+
    2024-04-02
  • python打印日志实例分析
    这篇“python打印日志实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python打印日志实例分析”文章吧。一、必...
    99+
    2023-07-02
  • MySQL慢查询日志不打印的示例分析
    这篇文章给大家分享的是有关MySQL慢查询日志不打印的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 测试环境修改 long_query_t...
    99+
    2024-04-02
  • Android中安全地打印日志的示例
    这篇文章主要介绍了Android中安全地打印日志的示例,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在Android开发过程中,不管是写Demo还是实战项目中,都会打印一些日...
    99+
    2023-05-30
  • SSM框架下结合log4j、slf4j打印日志的示例分析
    这篇文章主要介绍SSM框架下结合log4j、slf4j打印日志的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下:首先加入log4j和slf4j的jar包 <!-- 日志处理&...
    99+
    2023-05-30
    log4j ssm slf4j
  • 详谈异步log4j2中的location信息打印问题
    目录异步log4j2的location信息打印问题说下解决1、全异步同步异步混合log4j2支持异步打印提高打印输出速度pom依赖添加全局模式2两种局部模式 AsyncLogger异...
    99+
    2024-04-02
  • 关于log4j2的异步日志输出方式
    目录log4j2的异步日志输出方式第一种实现异步方式AsyncAppender第二种实现异步方式AsyncLoggerlog4j2异步注意事项log4j2异步类型小提示log4j2的...
    99+
    2024-04-02
  • Linux中日志的示例分析
    这篇文章主要介绍Linux中日志的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!日志的三种类型#内核及系统日志:这种日志数据由系统服务rsyslog统一管理,根据其主配置文件/etc/rsyslog.conf...
    99+
    2023-06-27
  • web打印的示例分析
    小编给大家分享一下web打印的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!项目中有个需求是将winform客户端的打印...
    99+
    2024-04-02
  • JavaScript中异步的示例分析
    这篇文章将为大家详细讲解有关JavaScript中异步的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、异步解决方案的进化史JavaScript的异步操作一直是...
    99+
    2024-04-02
  • 异步log4j2中的location信息打印问题怎么解决
    异步log4j2中的location信息打印问题怎么解决,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。异步log4j2的location信息打印问题背景:项目改...
    99+
    2023-06-22
  • Springboot异常日志输出方式的示例分析
    小编给大家分享一下Springboot异常日志输出方式的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!lombok插件使用引入依赖,在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/sette...
    99+
    2023-06-22
  • mysql中日志体系的示例分析
    这篇文章主要介绍了mysql中日志体系的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 一、 mysql...
    99+
    2024-04-02
  • MySQL中日志记录的示例分析
    小编给大家分享一下MySQL中日志记录的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、SQL命令历史~/.mysql_history 记录了...
    99+
    2023-06-20
  • SpringBoot2中如何配置Log4j2实现不同环境日志打印
    这篇文章主要介绍了SpringBoot2中如何配置Log4j2实现不同环境日志打印,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、Log4j2日志简介日志打印是了解Web项...
    99+
    2023-06-02
  • Ajax中同步和异步的示例分析
    小编给大家分享一下Ajax中同步和异步的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!通过ajax向后台发送和接收数据时...
    99+
    2024-04-02
  • 从log4j2到Disruptor的示例分析
    这篇文章主要为大家展示了“从log4j2到Disruptor的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“从log4j2到Disruptor的示例分析”这篇文章吧。log4j2异步日志...
    99+
    2023-06-22
  • springboot log4j2不能打印框架错误日志的解决方案
    springboot log4j2为什么不能打印框架错误日志 问题 使用springboot时老的框架使用的是log4j2,为了兼容不能够使用logback,按照网上的教程导入了lo...
    99+
    2024-04-02
  • Promise中异步编程的示例分析
    这篇文章主要介绍Promise中异步编程的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!实例如下所示://1.解决异步回调问题 //1.1 如何同步异步请求 //如...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作