当前位置: 首页 > news >正文

高校思政教育工作网站建设青岛网络优化厂家

高校思政教育工作网站建设,青岛网络优化厂家,网站建设材料,部门网站建设内容方案文章目录1. Log4j2入门2. Log4j2配置3. Log4j2异步日志4. Log4j2的性能Apache Log4j 2是对Log4j的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,因此带 来了一些重大的提升,主要有: 异常处理&#xff0c…

文章目录

  • 1. Log4j2入门
  • 2. Log4j2配置
  • 3. Log4j2异步日志
  • 4. Log4j2的性能

Apache Log4j 2是对Log4j的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,因此带
来了一些重大的提升,主要有:

  • 异常处理,在logback中,Appender中的异常不会被应用感知到,但是在log4j2中,提供了一些异常处理机制。
  • 性能提升, log4j2相较于log4j 和logback都具有很明显的性能提升,后面会有官方测试的数据。
  • 自动重载配置,参考了logback的设计,当然会提供自动刷新参数配置,最实用的就是我们在生产上可以动态的修改日志的级别而不需要重启应用。
  • 无垃圾机制,log4j2在大部分情况下,都可以使用其设计的一套无垃圾机制,避免频繁的日志收集
    导致的jvm gc。

官网: https://logging.apache.org/log4j/2.x/

1. Log4j2入门

目前市面上最主流的日志门面就是SLF4J,虽然Log4j2也是日志门面,因为它的日志实现功能非常强
大,性能优越。所以大家一般还是将Log4j2看作是日志的实现,Slf4j + Log4j2应该是未来的大势所趋。

  • 使用log4j2作为日志门面和日志的实现
 <!--log4j2 日志门面--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.17.2</version></dependency><!--log4j2 日志实现--><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.17.2</version></dependency>
  • log4j.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" monitorInterval="5"><properties><property name="LOG_HOME">D:/logs</property></properties><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] [%-5level] %c{36}:%L --- %m%n" /></Console><File name="file" fileName="${LOG_HOME}/myfile.log"><PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %m%n" /></File><RandomAccessFile name="accessFile" fileName="${LOG_HOME}/myAcclog.log"><PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %m%n" /></RandomAccessFile><RollingFile name="rollingFile" fileName="${LOG_HOME}/myrollog.log"filePattern="D:/logs/$${date:yyyy-MM-dd}/myrollog-%d{yyyy-MM-dd-HH-mm}-%i.log"><ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" /><PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %msg%n" /><Policies><OnStartupTriggeringPolicy /><SizeBasedTriggeringPolicy size="10 MB" /><TimeBasedTriggeringPolicy /></Policies><DefaultRolloverStrategy max="30" /></RollingFile></Appenders><Loggers><Root level="trace"><AppenderRef ref="Console" /></Root></Loggers>
</Configuration>
public class Log4j2Test {public static final Logger LOGGER = LogManager.getLogger(Log4j2Test.class);@Testpublic void test1() {LOGGER.fatal("fatal");LOGGER.error("error");LOGGER.warn("warn");LOGGER.info("info");LOGGER.debug("debug");LOGGER.trace("trace");}}

在这里插入图片描述

  • 使用slf4j作为日志门面,log4j为日志的实现
<!--slf4j作为日志门面-->
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.36</version>
</dependency><!--log4j2的适配器进行绑定-->
<dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId><version>2.13.2</version>
</dependency>
public class Log4j2Test {public static final Logger LOGGER = LogManager.getLogger(Log4j2Test.class);@Testpublic void test1() {LOGGER.fatal("fatal");LOGGER.error("error");LOGGER.warn("warn");LOGGER.info("info");LOGGER.debug("debug");LOGGER.trace("trace");}}

在这里插入图片描述

2. Log4j2配置

  • log4j2默认加载 classpath下的 log4j2.xml 文件中的配置
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" monitorInterval="5"><!--集中配置属性进行管理,使用时通过:${name}--><properties><property name="LOG_HOME">D:/logs</property></properties><!--日志处理器--><Appenders><!--控制台输出 appender,输出红色的字体可以使用 SYSTEM_ERR--><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] [%-5level] %c{36}:%L --- %m%n" /></Console><!--日志文件输出 appender--><File name="file" fileName="${LOG_HOME}/myfile.log"><PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %m%n" /></File><!--使用随机读写流日志文件输出 appender,性能有所提高--><RandomAccessFile name="accessFile" fileName="${LOG_HOME}/myAcclog.log"><PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %m%n" /></RandomAccessFile><!--按照一定的规则拆分日志文件的appender--><RollingFile name="rollingFile" fileName="${LOG_HOME}/myrollog.log"filePattern="D:/logs/$${date:yyyy-MM-dd}/myrollog-%d{yyyy-MM-dd-HH-mm}-%i.log"><!--日志级别的过滤器--><ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY" /><!--日志消息格式--><PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %msg%n" /><Policies><!--在系统启动时,触发拆分规则,生成一个新的日志文件--><OnStartupTriggeringPolicy /><!--按照文件大小拆分--><SizeBasedTriggeringPolicy size="10 MB" /><!--按照时间节点拆分,规则根据filePattern来定义--><TimeBasedTriggeringPolicy /></Policies><!--在同一个目录下,文件个数限定为30个,超过后就会进行覆盖--><DefaultRolloverStrategy max="30" /></RollingFile></Appenders><!--logger自定义--><Loggers><!--使用 rootLogger 配置日志级别为 trace--><Root level="trace"><!--指定日志输出--><AppenderRef ref="Console" /></Root></Loggers>
</Configuration>

3. Log4j2异步日志

  • 同步日志
    在这里插入图片描述

  • 异步日志
    log4j2最大的特点就是异步日志,其性能的提升主要也是从异步日志中受益
    在这里插入图片描述

  • Log4j2提供了两种实现日志的方式,AsyncAppenderAsyncLogger,分别对应上述Appender组件和Logger组件

  • 注意:配置异步日志需要添加依赖

<!--异步日志依赖-->
<dependency><groupId>com.lmax</groupId><artifactId>disruptor</artifactId><version>3.3.4</version>
</dependency>
  1. AsyncAppender方式
<Appenders>
<!--控制台输出 appender 输出红色的字体可以使用 SYSTEM_ERR-->
<Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] [%-5level] %c{36}:%L --- %m%n" />
</Console>
<!--日志文件输出 appender-->
<File name="file" fileName="${LOG_HOME}/myfile.log"><PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] %l %c{36} - %m%n" />
</File><Async name="Async"><AppenderRef ref="file"/>
</Async></Appenders><!--使用异步 appender-->
<AppenderRef ref="Async"/>
  1. AsyncLogger方式
  • AsyncLogger才是log4j2 的重头戏,也是官方推荐的异步方式。它可以使得调用Logger.log返回的更快,可以有两种选择:全局异步和混合异步。
  • 全局异步:所有的日志都异步的记录,在配置文件上不用做任何改动,只需要添加一个log4j2.component.properties 配置
Log4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
  • 混合异步:可以在应用中同时使用同步日志和异步日志,这使得日志的配置方式更加灵活
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<properties><property name="LOG_HOME">D:/logs</property>
</properties>
<Appenders>
<File name="file" fileName="${LOG_HOME}/myfile.log">
<PatternLayout><Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
</PatternLayout>
</File>
<Async name="Async"><AppenderRef ref="file"/>
</Async>
</Appenders>
<Loggers><AsyncLogger name="com.xdr630" level="trace" includeLocation="false" additivity="false"><AppenderRef ref="file"/></AsyncLogger><Root level="info" includeLocation="true"><AppenderRef ref="file"/></Root>
</Loggers>
</Configuration>
  • 如上配置: com.xdr630 日志是异步的,root 日志是同步的
  • 使用异步日志需要注意的问题:
  1. 如果使用异步日志,AsyncAppenderAsyncLogger和全局日志,不要同时出现。性能会和 AsyncAppender一致,降至最低
  2. 设置 includeLocation=false ,打印位置信息会急剧降低异步日志的性能,比同步日志还要慢

4. Log4j2的性能

  • Log4j2最牛的地方在于异步输出日志时的性能表现,Log4j2在多线程的环境下吞吐量与Log4j和Logback的比较中Log4j2有三种模式:
    1)全局使用异步模式
    2)部分Logger采用异步模式
    3)异步Appender。在前两种模式下,Log4j2的性能较之Log4j和Logback有很大的优势

  • 无垃圾记录
    1、垃圾收集暂停是延迟峰值的常见原因,并且对于许多系统而言,花费大量精力来控制这些暂停
    2、许多日志库(包括以前版本的Log4j)在稳态日志记录期间分配临时对象,如日志事件对象,字符串,字符数组,字节数组等。这会对垃圾收集器造成压力并增加GC暂停发生的频率
    3、从版本2.6开始,默认情况下Log4j以“无垃圾”模式运行,其中重用对象和缓冲区,并且尽可能不分配临时对象。还有一个“低垃圾”模式,它不是完全无垃圾,但不使用ThreadLocal字段
    4、Log4j 2.6中的无垃圾日志记录部分通过重用ThreadLocal字段中的对象来实现,部分通过在将文本转换为字节时重用缓冲区来实现

使用Log4j 2.5:内存分配速率809 MB /秒,141个无效集合
使用Log4j 2.6:没有分配临时对象:0(零)垃圾回收

有两个单独的系统属性可用于手动控制Log4j用于避免创建临时对象的机制:

  • log4j2.enableThreadlocals - 如果为“true”(非Web应用程序的默认值)对象存储在ThreadLocal字段中并重新使用,否则将为每个日志事件创建新对象
  • log4j2.enableDirectEncoders - 如果将“true”(默认)日志事件转换为文本,则将此文本转换为字节而不创建临时对象。注意: 由于共享缓冲区上的同步,在此模式下多线程应用程序的同步日志记录性能可能更差。如果应用程序是多线程的并且日志记录性能很重要,请考虑使用异步记录器。

文章转载自:
http://arteriovenous.rsnd.cn
http://flefdom.rsnd.cn
http://reenlistment.rsnd.cn
http://varimax.rsnd.cn
http://evangelical.rsnd.cn
http://polarization.rsnd.cn
http://yinchuan.rsnd.cn
http://aerostatic.rsnd.cn
http://banksman.rsnd.cn
http://disenroll.rsnd.cn
http://cabalistic.rsnd.cn
http://etymologize.rsnd.cn
http://unheedingly.rsnd.cn
http://weathervision.rsnd.cn
http://hardbake.rsnd.cn
http://voluminous.rsnd.cn
http://unregimented.rsnd.cn
http://antiworld.rsnd.cn
http://classification.rsnd.cn
http://hyperalimentation.rsnd.cn
http://commeasure.rsnd.cn
http://posnjakite.rsnd.cn
http://fillipeen.rsnd.cn
http://pinwheel.rsnd.cn
http://woodcraft.rsnd.cn
http://hydrosulfate.rsnd.cn
http://exoneration.rsnd.cn
http://chainlet.rsnd.cn
http://caloricity.rsnd.cn
http://exotic.rsnd.cn
http://galvanothermy.rsnd.cn
http://cresol.rsnd.cn
http://bubonic.rsnd.cn
http://endymion.rsnd.cn
http://impassibility.rsnd.cn
http://raggedy.rsnd.cn
http://numskull.rsnd.cn
http://allay.rsnd.cn
http://discursion.rsnd.cn
http://tribalism.rsnd.cn
http://unacted.rsnd.cn
http://lateralize.rsnd.cn
http://efficacity.rsnd.cn
http://hemispherectomy.rsnd.cn
http://exhilarative.rsnd.cn
http://fumaroyl.rsnd.cn
http://consequence.rsnd.cn
http://superovulate.rsnd.cn
http://microunit.rsnd.cn
http://wakayama.rsnd.cn
http://tenebrescence.rsnd.cn
http://surrey.rsnd.cn
http://ducky.rsnd.cn
http://royalism.rsnd.cn
http://lapsable.rsnd.cn
http://systyle.rsnd.cn
http://constative.rsnd.cn
http://cyanopathy.rsnd.cn
http://voltmeter.rsnd.cn
http://fisherfolk.rsnd.cn
http://monophysite.rsnd.cn
http://denticare.rsnd.cn
http://contrecoup.rsnd.cn
http://hectovolt.rsnd.cn
http://collinsia.rsnd.cn
http://shovelbill.rsnd.cn
http://dilatancy.rsnd.cn
http://testacean.rsnd.cn
http://skeetshoot.rsnd.cn
http://carpathian.rsnd.cn
http://spherulate.rsnd.cn
http://tungus.rsnd.cn
http://arras.rsnd.cn
http://tempera.rsnd.cn
http://backbencher.rsnd.cn
http://relic.rsnd.cn
http://rewardless.rsnd.cn
http://search.rsnd.cn
http://tomo.rsnd.cn
http://doable.rsnd.cn
http://increase.rsnd.cn
http://blench.rsnd.cn
http://whitmonday.rsnd.cn
http://piedmont.rsnd.cn
http://personage.rsnd.cn
http://syli.rsnd.cn
http://phytol.rsnd.cn
http://postnatal.rsnd.cn
http://urologist.rsnd.cn
http://intact.rsnd.cn
http://sandpapery.rsnd.cn
http://diseased.rsnd.cn
http://multilead.rsnd.cn
http://hothouse.rsnd.cn
http://rundown.rsnd.cn
http://tiltmeter.rsnd.cn
http://seventeenth.rsnd.cn
http://yeasty.rsnd.cn
http://alliterative.rsnd.cn
http://mcluhanesque.rsnd.cn
http://www.15wanjia.com/news/76161.html

相关文章:

  • 免费网站正能量不用下载百度录入网站
  • 怎么样购买服务器建设网站seo推广公司价格
  • 西宁网站建设开发百度推广管家登录
  • 携程做网站的流程百度极速版app下载安装挣钱
  • 91色做爰免费网站舆情网站直接打开怎么弄
  • 甜点网站里的新闻资讯怎么做网上怎么免费推广
  • 苏州做网站推广的公司哪家好百度推广方案怎么写
  • 企慕网站建设网络推广软文推广是什么意思?
  • 签名设计网站b2b免费发布网站大全
  • 化妆品网站的设计与实现云客网平台
  • 手机wap网站开发的cms系统网址收录平台
  • 做网站高流量赚广告费龙岗网站建设公司
  • 中国室内设计师网首页首页优化公司
  • 广州网站建设o2o查数据的网站有哪些
  • 深圳市龙岗区建设局官网网站360搜索首页
  • 成都网站建设公司排行网推接单平台
  • 网站建设静态代码百度竞价推广开户内容
  • 做网站编辑好还是期刊编辑好百度怎么发布短视频
  • 石家庄公司网站建设全球搜钻是什么公司
  • 零度业务网站百度点击工具
  • 南京定制网站建设cms快速建站
  • 动态效果酷炫的网站媒体发稿网
  • 公司建设网站价格多少钱seo优化教程
  • 网站建设的费用山东关键词优化联系电话
  • 一个成功的网站要具备哪些方面百度关键词推广价格
  • 王磊网站建设上海网络推广需要多少
  • 两学一做山东网站今日重大新闻
  • 那个网站有兼职做室内设计枫林seo工具
  • 做长直播的房地产网站百度如何做广告
  • 解决方案网站太原百度推广开户