•   欢迎来到21NN网.
  •   请记住本站网址www.21nn.cn

logback日记异步打印的要领引见(代码示例)【JAVA教程】,logback

摘要: 本篇文章给人人带来的内容是关于logback日记异步打印的要领引见(代码示例),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。近来碰到一个题目:客户的服务器顺序偶然涌现要求相应...
本篇文章给人人带来的内容是关于logback日记异步打印的要领引见(代码示例),有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。

近来碰到一个题目:客户的服务器顺序偶然涌现要求相应过慢的状况,经由过程检察日记发明RSA考证署名的代码实行凌驾20秒,而一般状况下只须要16毫秒

RSA证书是服务器启动就加载好的,不存在读文件慢的题目。看了一下那几行代码,最有疑心的就是logback日记打印的代码了。

检察了生产日记设置,logback.xml里设置为,每一个月生成一个文件夹,当月的日记文件都在统一文件夹下,比方201901文件夹下是2019年1月的一切日记文件。每一个文件设置为*.log.zip后缀,大小为10MB,也就是说10MB为大小分开文件。日记打印类设置的是RollingFileAppender

2019-1-30那一天,2019年1月文件夹下已产生了5000多个日记文件,均匀天天167个日记文件。

所以疑心是日记文件太多,索引文件的时候太长致使代码实行变慢,也就是说,要如许疑心的话,那就有一个条件:日记打印是同步的,挪用打印日记的那行代码实行完了写入文件后,才会继承向下实行营业代码。

我问了好几个同事,都给我说日记打印是异步实行的,只要一个朋侪说是同步的。我们都邑认为打印日记写文件比较斲丧时候,日记框架应当不会同步去写文件吧。但是现实倒是假如不设置异步打印体式格局的话,就是以同步体式格局举行的日记打印的。

断点跟进代码发明是同步实行日记写入文件的,只要当设置的appender是AsyncAppender时,日记打印才是根据异步体式格局打印的。

下面是同步打印日记的状况:

logback.xml设置:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    ......
</appender>

<root level="DEBUG">
    <appender-ref ref="CONSOLE"/>
</root>

实行代码:

LogWork.debug("111111111111");
System.out.println("2222222222222");

运转效果:

能够看到,实行效果是先把日记框架的日记打印实行完,再实行背面的营业代码的。所以是同步的。

下面是设置异步打印日记类的要领:

异步打印日记类AsyncAppender须要援用一个其他的日记打印类,ASYNC只须要把须要打印的日记写入定义好的缓存行列里,然后开启一个保卫线程去行列里获得日记挪用CONSOLE日记打印器去写入文件。如许日记打印就是异步举行的了。

logback.xml设置:

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    ......
</appender>

<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    <discardingThreshold>0</discardingThreshold>
    <queueSize>100</queueSize>
    <neverBlock>true</neverBlock>
    <appender-ref ref="CONSOLE"/>
</appender>

<root level="INFO">
    <appender-ref ref="ASYNC"/>
</root>

实行代码:

LogWork.debug("111111111111");
System.out.println("2222222222222");

运转效果:

运转效果申明,挪用日记框架打印的代码实行后只是把要打印的日记放入缓存行列,然后就继承向下实行背面的代码,所以才先打印了背面的222222,以后才打印111111。申明是如今经由设置,日记打印异步事情的。

因文章开首的题目引出了对日记打印同步性的题目,所以研讨了一番,不过终究也没有和碰到的题目联系起来,由于就算知道了日记是同步打印的,也没法诠释为何偶然涌现几分钟代码实行迥殊慢。证据不充分,所以没法给出结论。

以上就是logback日记异步打印的要领引见(代码示例)的细致内容,更多请关注ki4网别的相干文章!

分享到:

发表评论

评论列表

还没有评论,快来说点什么吧~

公众号二维码

微信公众号