如何使用从字符串创建的java.util.Properties对象重新配置日志记录器(log4j2)?

wa7juj8i  于 2022-11-06  发布在  Java
关注(0)|答案(1)|浏览(154)

从log4j迁移到log4j2。以前,在创建Logger对象后调用以下函数。

public static void getLog4JSettingsFromString(String configString) throws IOException {
    Properties log4j = new java.util.Properties();
    log4j.load(new ByteArrayInputStream(configString.getBytes()));
    PropertyConfigurator.configure(log4j);
}
ar7v8xwq

ar7v8xwq1#

要配置Log4j 2.x,您需要从ConfigurationFactory获取Configuration

final InputStream is = new ByteArrayInputStream(configString);
final LoggerContext context = LoggerContext.getContext(false);
final ConfigurationSource source = new ConfigurationSource(is);
final Configuration config = new PropertiesConfigurationFactory().getConfiguration(context, source);
Configurator.reconfigure(config);

有两个名为PropertiesConfigurationFactory的工厂:

  • 一个支持Log4j 2.x配置语法的配置:
import org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory;
  • 支持Log4j 1.x配置语法(的子集):
import org.apache.log4j.config.PropertiesConfigurationFactory;

并且需要log4j-1.2-api相关性。

相关问题