Log4j2:将 2 个静态类记录到一个日志文件中,附加 =“true”

时间:2021-06-17 10:49:19

标签: java xml logging log4j2

我的 eclipse 中的一个项目中有 2 个 static void 主类,并包含 log4js 来记录其活动。我想知道是否可以在一个项目中导出 2 个日志文件。例如, 在 main.java 类上。我已经包括如下图

假设我有

demo.java 和 launch.java ,都是静态类。例如代码

public class launcher {
    private static final Logger LOG = LogManager.getLogger(launcher.class);
    public static void main(String[] args) {
        LOG.info("log this - launch ");
    }
}


public class demo {
    private static final Logger LOG = LogManager.getLogger(demo.class);
    public static void main(String[] args) {
        LOG.info("log this - demo");
    }
}

我将触发 launcher.java ,这会将日志文件导出为 result.log result.log 将包含

line 1 : log this  - launcher

但是当我在同一个项目中触发第二个类(demo.java)时, 这将覆盖所有日志,例如

line 1 : log this - demo

我试图实现我运行的每个类,它将附加到最后一行而不是覆盖日志文件。

结果输出应如下图

line 1 : log this  - launcher
line 2 : log this - demo

我还在滚动文件中包含了 append = "true" 但它仍然没有追加。使用 中的教程附加将起作用。

我做过的 XML log4j2.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <Properties>
        <Property name="basePath">../logScript/logs</Property>
        <Property name="logPattern">[%-5level] %d{yyyy-MM-dd HH:mm:ss} [%t] %c{1} - %m%n</Property>
        <Property name="logPath"></Property>
        <Property name="logSize">20 MB</Property>
        <property name="date">${date:ddMMyyyy}</property>
    </Properties>
    <Appenders>
       
        <!-- Console Appender -->
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="%-5p | %d{yyyy-MM-dd HH:mm:ss} | [%t] %C{2} (%F:%L) - %m%n" />
        </Console>
        
    
       <RollingFile name="fileLogger" 
                    fileName="${basePath}/test_tableau_${date}.log" 
                    filePattern="${basePath}/test_tableau.%d{ddMMyyyy}.log"
                    append = "true"
                    ignoreExceptions="false">
   
        
            <PatternLayout>
                <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
            </PatternLayout>
            
            <!-- Log File size policy max 20mb -->
            <Policies>
            <TimeBasedTriggeringPolicy interval="2" modulate="false"/>
            <SizeBasedTriggeringPolicy size="${logSize}" />
            <OnStartupTriggeringPolicy/>
            </Policies>
            
            
            <!-- Auto Delete logs if more than x no of days -->>
              <DefaultRolloverStrategy>
                <Delete basePath="${basePath}/" maxDepth="3">
                    <IfFileName
                        glob="test_tableau.*.log" />
                    <IfLastModified age="30d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
        
    </Appenders>
    <Loggers>
        <Logger name="com.test_hyperAPI" level="debug" />
        <Root level="all">
            <AppenderRef ref="console" />
            <AppenderRef ref="fileLogger" />
        </Root>
    </Loggers>
</Configuration>

我想知道这是否可行,或者我需要采用不同的方法?

0 个答案:

没有答案
相关问题