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