如何在 Log4j2 中获取记录器层次结构?我正在从 Log4j1 迁移到 log4j2.早些时候,我们使用层次结构类来



早些时候我们这样做如下: 这是我们用来获取记录器层次结构和记录器的代码。但现在在 log4j2 中,层次结构类不存在。 在 log4j2 中实现以下的替代方案是什么?

public class ReportHierarchy extends Hierarchy
{
public ReportHierarchy(Logger root)
{
super(root);
}
public Logger getLogger(String name)
{
return getLogger(name, defaultFactory);
}
private LoggerFactory defaultFactory = new ReportFactory();
}

我们使用 ReportHierarchy 类,如下所示:

static
{
ReportHierarchy h = new ReportHierarchy(new RootLogger(Level.DEBUG));
LogManager.setRepositorySelector(new DefaultRepositorySelector(h), "nuova");
LogManager.resetConfiguration();
NuRollingFileAppender.initializeCleanupTimer();
}

这部分架构在 Log4j 1.x 和 Log4j2 之间没有改变,但名称发生了变化。所以你有:

  • 一个ContextSelector而不是一个RepositorySelector
  • 一个LoggerContext而不是Hierarchy.

无需再在代码中设置ContextSelector,只需将log4j2.contextSelectorLog4j2 系统属性设置为选择器的完全限定类名即可。例如,您可以在log4j2.component.properties文件中执行此操作。

最新更新