log4j2中的PropertyConfiguration

log4j2中的PropertyConfiguration,log4j,migration,log4j2,Log4j,Migration,Log4j2,我正在将log4j1.2.8迁移到log4j2.3。一切都很好,除此之外,我找不到任何替代方案 是否还有其他类来处理PropertyConfiguration之前所做的工作?Log4j 2目前支持使用XML、JSON或YAML进行配置。虽然在不久的将来还可能支持属性文件,但语法肯定会与Log4j 1不同。这可能会对您有所帮助吗 如何使用特定的配置文件在代码中重新配置log4j2? 请参见下面的示例。请注意,此LoggerContext类不是公共API的一部分,因此您的代码可能会因任何小版本而中断

我正在将log4j1.2.8迁移到log4j2.3。一切都很好,除此之外,我找不到任何替代方案


是否还有其他类来处理PropertyConfiguration之前所做的工作?

Log4j 2目前支持使用XML、JSON或YAML进行配置。虽然在不久的将来还可能支持属性文件,但语法肯定会与Log4j 1不同。

这可能会对您有所帮助吗

如何使用特定的配置文件在代码中重新配置log4j2? 请参见下面的示例。请注意,此LoggerContext类不是公共API的一部分,因此您的代码可能会因任何小版本而中断


下面是我对同一问题的解决方案:

web.xml

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

    <context-param>
        <param-name>isLog4jContextSelectorNamed</param-name>
        <param-value>false</param-value>
    </context-param>

    <!-- ... and so on -->

</web-app>

isLog4jContextSelectorNamed
假的
LoggerHelper.java

    import java.io.File;
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.core.LoggerContext;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    public final class LoggerHelper {

      public static Logger INSTANCE;

      public static void initialize() {    
        String        fileName = "<PATH>/log4j.xml";
        LoggerContext context  = (LoggerContext)LogManager.getContext(false);

        context.setConfigLocation(new File(fileName).toURI());
        INSTANCE = LoggerFactory.getLogger(LoggerHelper.class);

        String logMessage = String.format("Initialized (%s).", fileName);
        System.out.println(logMessage);
        INSTANCE.info(logMessage);
      }

    }
导入java.io.File;
导入org.apache.logging.log4j.LogManager;
导入org.apache.logging.log4j.core.LoggerContext;
导入org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
公共最终类LoggerHelper{
公共静态记录器实例;
公共静态void initialize(){
字符串fileName=“/log4j.xml”;
LoggerContext=(LoggerContext)LogManager.getContext(false);
context.setConfigLocation(新文件名.toURI());
INSTANCE=LoggerFactory.getLogger(LoggerHelper.class);
String logMessage=String.format(“已初始化(%s)”,文件名);
System.out.println(日志消息);
INSTANCE.info(logMessage);
}
}

以下解决方案是否解决了您的问题?
    import java.io.File;
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.core.LoggerContext;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;

    public final class LoggerHelper {

      public static Logger INSTANCE;

      public static void initialize() {    
        String        fileName = "<PATH>/log4j.xml";
        LoggerContext context  = (LoggerContext)LogManager.getContext(false);

        context.setConfigLocation(new File(fileName).toURI());
        INSTANCE = LoggerFactory.getLogger(LoggerHelper.class);

        String logMessage = String.format("Initialized (%s).", fileName);
        System.out.println(logMessage);
        INSTANCE.info(logMessage);
      }

    }