java - 如何用新文件覆盖 log4j2.xml 中指定的日志文件名?

标签 java selenium webdriver radio-button

我创建了单独的简单日志类:log.java) 例如,

import org.apache.log4j.LogManager;
public class Logs {
   private static final org.apache.log4j.Logger logger= LogManager.getLogger(Logs.class);
   public static org.apache.log4j.Logger Log() {
       return logger;
   }
}

并使用以下 log4j2.xml 文件

<Configuration status="INFO">
    <Properties>
        <Property name="log-path">logs</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <File name="MyFile" fileName="${log-path}/Log${date:yyyy-MM-dd-HH-mm-ss}.log" immediateFlush="false" append="false">
            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console" />
            <AppenderRef ref="MyFile" />
        </Root>
    </Loggers>
</Configuration>

问题:我想将日志文件名 testbest.log 传递给我的日志类,以便在创建日志时日志文件名将是 testbest.log 而不是 Log${date:yyyy-MM-dd-HH- mm-ss}.log

我怎样才能做到这一点?

最佳答案

log4j.xml

<Configuration status="INFO">
    <Properties>
        <Property name="log-path">logs</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
        <File name="MyFile" fileName="${log-path}/${sys:log-file-name}" immediateFlush="false" append="false">
            <PatternLayout pattern="%d{yyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
        </File>
    </Appenders>
    <Loggers>
        <Root level="INFO">
            <AppenderRef ref="Console" />
            <AppenderRef ref="MyFile" />
        </Root>
    </Loggers>
</Configuration>

启动时可以指定文件名作为VM参数

java -Dlog-file-name="testbest.log"

或者您可以通过编程方式将其定义为系统属性

System.setProperty("log-file-name", "testbest.log");

关于java - 如何用新文件覆盖 log4j2.xml 中指定的日志文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47272365/

相关文章:

selenium - PhantomJS + Selenium,如何为在新窗口中打开的链接设置用户代理?

java - driver.getPageSource() 将符号 < 转换为 <

java - 使用 Java 的 Selenium WebDriver 测试中的 waitForVisible/waitForElementPresent 的等价物?

java - 如何添加mcxiaoke.volley:library

java - 具有值(等于)相等性的 SoftReference 的潜在用途

java - 如何在按钮内使用静态和动态文本

java - 在 Selenium 2/Java 中等待条件的最简洁方法?

Java LibGDX 内存泄漏

java - 无法让 selenium 使用 xpath 为我选择按钮。我缺少什么?

css - 如何使用 selenium webdriver 遍历并单击“下一步”和“取消”按钮(在弹出窗口上)