ignite系列之14--log4j2日志配置

Ignite支持各种常见的日志库和框架:

  • JUL (默认);
  • Log4j2;
  • JCL;
  • SLF4J。

ignite默认日志介绍(无需配置)见:https://www.cnblogs.com/yangh2016/p/17221433.html

但上述日志方式在与log4j标准不同,在生产环境存在一些问题,故需要配置log4j的方式

.如何配置使用Log4j2?

1、配置文件

<?xml version="1.0" encoding="UTF-8"?>

<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<Configuration monitorInterval="60">
    <Appenders>
        <Console name="CONSOLE" target="SYSTEM_OUT">
            <PatternLayout pattern="[%d{ISO8601}][%-5p][%t][%c{1}]%notEmpty{[%markerSimpleName]} %m%n"/>
            <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/>
        </Console>

        <Console name="CONSOLE_ERR" target="SYSTEM_ERR">
            <PatternLayout pattern="[%d{ISO8601}][%-5p][%t][%c{1}]%notEmpty{[%markerSimpleName]} %m%n"/>
        </Console>

        <Routing name="FILE">
            <Routes pattern="$${sys:nodeId}">
                <Route>
                    <RollingFile name="Rolling-${sys:nodeId}" fileName="${sys:IGNITE_HOME}/work/log/ignite-${sys:nodeId}.log"
                                 filePattern="${sys:IGNITE_HOME}/work/log/ignite-${sys:nodeId}-%i-%d{yyyy-MM-dd}.log.gz">
                        <PatternLayout pattern="[%d{ISO8601}][%-5p][%t][%c{1}]%notEmpty{[%markerSimpleName]} %m%n"/>
                        <Policies>
<!--                            <TimeBasedTriggeringPolicy interval="3" modulate="true" />-->
                            <SizeBasedTriggeringPolicy size="100 MB" />
                        </Policies>
                        <DefaultRolloverStrategy max="30"/>
                    </RollingFile>
                </Route>
            </Routes>
        </Routing>
    </Appenders>

    <Loggers>
        <!--
        <Logger name="org.apache.ignite" level=DEBUG/>
        -->

        <!--
            Uncomment to disable courtesy notices, such as SPI configuration
            consistency warnings.
        -->
        <!--
        <Logger name="org.apache.ignite.CourtesyConfigNotice" level=OFF/>
        -->

        <Logger name="org.springframework" level="WARN"/>
        <Logger name="org.eclipse.jetty" level="WARN"/>

        <!--
        Avoid warnings about failed bind attempt when multiple nodes running on the same host.
        -->
        <Logger name="org.eclipse.jetty.util.log" level="ERROR"/>
        <Logger name="org.eclipse.jetty.util.component" level="ERROR"/>

        <Logger name="com.amazonaws" level="WARN"/>

        <Root level="debug">
            <!-- Uncomment to enable logging to console. -->
            <!--<AppenderRef ref="CONSOLE" level="DEBUG"/>-->

            <AppenderRef ref="CONSOLE_ERR" level="ERROR"/>
            <AppenderRef ref="FILE" level="DEBUG"/>
        </Root>
    </Loggers>
</Configuration>
1)日志级别:Root level="debug">
2)日志文件大小:
<SizeBasedTriggeringPolicy size="100 MB" />
3)压缩后的文件个数:
 <DefaultRolloverStrategy max="30"/>
日志文件效果:

 

 

2、jar包依赖

maven工程需要添加如下依赖

 <dependency>
                <groupId>org.apache.ignite</groupId>
                <artifactId>ignite-log4j2</artifactId>
                <version>${ignite.version}</version>
            </dependency>

对于使用ignite部署包(apache-ignite-2.14.0-bin)需要把依赖包的目录移动到libs目录

 

 3、java代码示例(配置log4j2)

IgniteConfiguration cfg = new IgniteConfiguration();
IgniteLogger log = new Log4J2Logger("log4j2-config.xml");
cfg.setGridLogger(log);
// Start a node.
try (Ignite ignite = Ignition.start(cfg)) {
    ignite.log().info("Info Message Logged!");
}

IDE中运行,需要设置环境变量,示意图如下:

 

 

4、ignite配置文件配置log4j2

<bean class="org.apache.ignite.configuration.IgniteConfiguration" id="ignite.cfg">
    <property name="gridLogger">
        <bean class="org.apache.ignite.logger.log4j2.Log4J2Logger">
            <!-- log4j2 configuration file -->
            <constructor-arg type="java.lang.String" value="config/log4j2-config.xml"/>
        </bean>
    </property>
</bean>

 

posted @ 2023-03-16 15:44  life_start  阅读(107)  评论(0编辑  收藏  举报