Ignite Log4j 不创建日志为 ignite.log

Ignite Log4j not creating logs as ignite.log

配置的 Ignite Log4J 模块和日志每次都生成为 ignite-uniqueid.log。我的要求是只获取单个 ignite.log 的日志。

您应该使用 XML 配置参数创建自己的 Log4JLogger 并将其传递给 IgniteConfiguration.setLogger

XML 配置文件应该像 this one from Ignite source.

请看一看类似的

我发现用不修改目标文件名的默认 RollingFileAppender 替换 Ignite 的 Log4jRollingFileAppender 很有用。

更多详情:

更改 Ignite 配置文件:

...
    <property name="gridLogger">
       <bean class="org.apache.ignite.logger.log4j.Log4JLogger">
          <constructor-arg type="java.lang.String" value="config/ignite-logging-log4j.xml"/>
       </bean>
    </property>
...

在 ignite-logging-log4j.xml 文件设置中进行了以下更改。您可以使用 Ignite 分发 zip 中的默认值作为占位符。将 FILE appender 更改为:

 <!--<appender name="FILE" class="org.apache.ignite.logger.log4j.Log4jRollingFileAppender">-->
    <appender name="FILE" class="org.apache.log4j.RollingFileAppender">
        <param name="Threshold" value="DEBUG"/>
        <param name="File" value="C:/Ignite/log/MyIgnite.log"/>
        <param name="Append" value="true"/>
        <param name="MaxFileSize" value="1KB"/>
        <param name="MaxBackupIndex" value="10"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%d{ISO8601}][%-5p][%t][%c{1}] %m%n"/>
        </layout>
    </appender>

启动 Ignite 实例。

public static void main(String[] args){
    Ignition.start("config/<your-ignite-config-filename>.xml");
}

在那之后,您应该在您的目录中观察到一堆 ~1KB 的日志文件:

-rw-r--r-- 1  177 May  1 01:15 MyIgnite.log
-rw-r--r-- 1 1512 May  1 01:15 MyIgnite.log.1
-rw-r--r-- 1 1050 May  1 01:15 MyIgnite.log.10
-rw-r--r-- 1 1146 May  1 01:15 MyIgnite.log.2
-rw-r--r-- 1 1402 May  1 01:15 MyIgnite.log.3