在项目中,是使用Spring集成ignite的方式进行嵌入式启动.那么Spring如何集成Ignite Log4j2日志呢,请见下面介绍:
1. Spring集成Log4j2
首先来看Spring是如何集成Log4j2日志的.
引入对应的maven依赖:
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-jcl</artifactId> <version>2.7</version> </dependency>
再在classpath目录下添加log4j2.xml就可以了,不需要像log4j一样添加web监听器 .
log4j2.xml例子如下,关于log4j2配置文件的具体配置和读取优先级可以参考log4j2官网配置参考
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Logger name="org.springframework.beans.factory" level="DEBUG"/> <Root level="error"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration>
这样配置之后,在项目启动后,log4j2自然就会启动.
注意log4j2中获取log的方法与log4j不同,需要从LogManager中获取
private static final Logger logger = LogManager.getLogger(Class.class);
2. Spring集成Ignite Log4j2日志
集成方式,同样很简单.如果项目中使用maven进行依赖管理,那么需要添加如下的依赖:
<dependency> <groupId>org.apache.ignite</groupId> <artifactId>ignite-log4j2</artifactId> <version>${ignite.version}</version> </dependency>
将${ignite.version}
替换为实际使用的Ignite版本。
要使用Log4j2进行日志记录,需要配置IgniteConfiguration的gridLogger属性,如下所示:
XML:
<bean class="org.apache.ignite.configuration.IgniteConfiguration"> <property name="gridLogger"> <bean class="org.apache.ignite.logger.log4j2.Log4J2Logger"> <constructor-arg type="java.lang.String" value="log4j2.xml"/> </bean> </property> <!-- Other Ignite configurations --> ... </bean>
在上面的配置中,log4j2.xml的路径要么是绝对路径,要么是相对路径,相对路径可以相对于META-INF,也可以相对于IGNITE_HOME。
只需要进行如上简单的配置,还是原来使用log4j2的方式,即可兼容正常Ignite log4j2日志.
日志示例如下:
|2018-04-26 11:17:52.410|main|8081|settlement-service|com.crt.settlement.service.business.dailyclearing.points.impl.PointsDailyClearingServiceImpl||INFO||###+-###|##+-##|##+-##||解锁+++++++++++++++++++++++++++++++++ |2018-04-26 11:17:58.415|main|8081|settlement-service|com.crt.settlement.service.business.dailyclearing.points.impl.PointsDailyClearingServiceImpl||INFO||###+-###|##+-##|##+-##||=================flabo========111111111 |2018-04-26 11:18:01.607|grid-timeout-worker-#23%myBatisObjectGrid%|8081|settlement-service|org.apache.ignite.internal.IgniteKernal%myBatisObjectGrid||INFO||###+-###|##+-##|##+-##|| Metrics for local node (to disable set 'metricsLogFrequency' to 0) ^-- Node [id=56ea94bb, name=myBatisObjectGrid, uptime=01:04:00.279] ^-- H/N/C [hosts=1, nodes=1, CPUs=4] ^-- CPU [cur=0%, avg=0.55%, GC=0%] ^-- PageMemory [pages=6359] ^-- Heap [used=579MB, free=67.68%, comm=812MB] ^-- Non heap [used=120MB, free=-1%, comm=122MB] ^-- Outbound messages queue [size=0] ^-- Public thread pool [active=0, idle=0, qSize=0] ^-- System thread pool [active=0, idle=6, qSize=0] |2018-04-26 11:18:01.607|grid-timeout-worker-#23%myBatisObjectGrid%|8081|settlement-service|org.apache.ignite.internal.IgniteKernal%myBatisObjectGrid||INFO||###+-###|##+-##|##+-##||FreeList [name=myBatisObjectGrid, buckets=256, dataPages=1, reusePages=0]