集成log4j2【JWordPress前台项目实战】

写在前面

在任何系统中,日志都是非常重要的组成部分,它是反映系统运行情况的重要依据,也是排查问题时的必要线索。绝大多数人都认可日志的重要性,但是又有多少人仔细想过该怎么打日志,日志对性能的影响究竟有多大呢?

新的Log4j 2.0版本有了大幅的性能提升、新的插件系统,以及配置设置方面的很多改善。Log4j 1.x 在高并发情况下出现死锁导致cpu使用率异常飙升,而Log4j2.0基于LMAX Disruptor的异步日志在多线程环境下性能会远远优于Log4j 1.x和logback ——官方测试结果

代码

pom.xml添加相应的依赖

<!–配置Log4j2日志 –>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.6</version>
</dependency>

增加日志格式配置文件log4j2.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<!–Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出。 –>
<!– monitorInterval 自动监控配置文件是否发生改变的时间间隔,如果检测到改变会进行热加载–>
<Configuration status=”INFO” monitorInterval=”1800″>
<!– 全局属性 –>
<properties>
<!–日志文件储存的目录 –>
<!– <property name=”LOG_HOME”>${sys:catalina.home}/logs/om_error</property> –>
<property name=”LOG_HOME”>/data/logs</property>
<property name=”ERROR_FILE_NAME”>JWordpres-web</property>
<!–设定日志输出的具体格式 –>
<!–%-5p(日志级别) | %d(日期) | JWordpres-v1.0 | [%t(线程名称)-%T(线程号)] (%c{1.}(简化全类名):%L(行号)) | %m(日志信息)%n(换行) –>
<property name=”PATTERN”>%-5p | %d | JWordpres-v2.0 | [%t-%T] (%c{1.}:%L) | %m%n</property>
<!– <property name=”PATTERN”>%d %-5p [%t-%T] (%c{1.}:%L) – %m%n</property> –>
</properties>

<!–定义日志的输出路径 –>
<Appenders>
<!–输出日志到控制台 –>
<Console name=”Console” target=”SYSTEM_OUT”>
<PatternLayout pattern=”${PATTERN}” />
</Console>
<!– 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档–>
<RollingFile name=”ErrorLog” fileName=”${LOG_HOME}/${ERROR_FILE_NAME}.log”
filePattern=”${LOG_HOME}/${ERROR_FILE_NAME}_%d{yyyy-MM-dd}_%i.log”
bufferedIO=”false” immediateFlush=”true” >
<!–设置日志输出的格式 –>
<PatternLayout pattern=”${PATTERN}”/>
<!–设置当前日志只输出ERROR级别的日志 –>
<!–控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)–>
<!– <Filters>
<ThresholdFilter level=”ERROR” onMatch=”ACCEPT” onMismatch=”DENY”/>
</Filters> –>
<Policies>
<SizeBasedTriggeringPolicy size=”50 MB” />
<!–设置触发时间策略的时间间隔,一天产生一个新文件 –>
<TimeBasedTriggeringPolicy interval=”2000″ modulate=”true”/>
<!–设置每个日志文件的最大大小,单位可以为 B KB MB GB –>
<!– <SizeBasedTriggeringPolicy size=”1KB”/> –>
</Policies>
<!– DefaultRolloverStrategy属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20000 –>
<DefaultRolloverStrategy max=”20000″/>
</RollingFile>

</Appenders>

<!–然后定义logger,只有定义了logger并引入的appender,appender才会生效–>
<Loggers>
<!– 3rdparty Loggers –>
<!– 下面配置一些第三方包的日志过滤级别,用于避免刷屏 测试–>
<logger name=”org.hibernate” level=”INFO” />
<logger name=”org.springframework” level=”INFO” />
<logger name=”org.apache” level=”INFO” />
<logger name=”org.mybatis” level=”INFO” />
<logger name=”com.alibaba” level=”INFO” />
<logger name=”druid.sql” level=”INFO” />
<logger name=”cn.liuhaihua.web.mapper” level=”DEBUG” />
<logger name=”cn.liuhaihua.web.service.impl” level=”INFO” />
<!–com.gomefinance包下的日志异步输出 includeLocation:包含本地信息;additivity:不继承父类的日志输出–>
<AsyncLogger name=”cn.liuhaihua.web” level=”INFO” includeLocation=”true” additivity=”false”>
<appender-ref ref=”ErrorLog”/>
<appender-ref ref=”Console”/>
</AsyncLogger>
<!–建立一个默认的root的logger –>
<root level=”INFO” includeLocation=”true”>
<appender-ref ref=”ErrorLog”/>
<appender-ref ref=”Console”/>
</root>
</Loggers>
</Configuration>

效果

启动应用,查看日志格式如下图所示

1530787786(1)

实战项目介绍

项目介绍

为了满足Java新手朋友课程要求,我特出此教程,由于时间仓促的问题,代码写得不好之处的地方还请多多包涵。

目标如下

  1. 优化wordpress效率低下的问题(目前博主文章数量大概10万+)
  2. 让群里面初级Java朋友们更快上手springboot应用

GIT地址:https://gitee.com/jxuasea/JWordpress

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 集成log4j2【JWordPress前台项目实战】

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址