FileAppender具有运行时定义的文件路径

时间:2018-02-07 10:15:52

标签: java logging log4j2

我在jetty9上运行的maven java war应用程序中使用log4j 2.x. 我只需要遵循以下结构:

  1. 单点代码(功能)lo log message。
  2. 记录函数调用org.apache.logging.log4j.core.Logger。[info,error ...] function。
  3. log4j工具写入主jetty9日志并将日志驻留在运行时定义的相应文件夹中。
  4. 我遵循log4j2.xml config:

    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="WARN">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout 
                    pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%-5L - %m%n"/>
            </Console>
        </Appenders>
        <Loggers>
            <Root level="info">
                <AppenderRef ref="Console"/>
            </Root>
        </Loggers>
    </Configuration>
    

    我在maven pom中使用了follow依赖:

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.8.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.8.2</version>
    </dependency>
    

    并关注导入:

    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.core.Logger;
    

    我尝试用大量的log4j类进行头脑风暴伏都教:

    //Configuration c = new AbstractConfiguration
    //PatternLayout layout = new PatternLayout();
    //FileAppender appender = new FileAppender("printlog", Layout.);
    //logger.addAppender(null);
    //OHH MY GOD!!!!
    

    我在https://logging.apache.org/log4j/2.x/manual/appenders.html#FileAppender这样的文档中搜索过很多,但我找不到任何接近解决问题的方法 我发现的只是手册中的配置文件appender的硬编码路径 如何以编程方式执行?
    我需要以编程方式定义的FileAppender从xml config中定义的ConsoleAppender继承PatternLayout,因为代码重用和单点控制问题。

0 个答案:

没有答案