如何从java代码创建log4j2 appender?

时间:2013-07-01 14:07:49

标签: java logging log4j2

我需要为我的应用程序中的不同对象实例创建单独的日志。例如,如果我们使用书籍,我需要为每本书单独记录日志文件。它适用于log4j2.xml文件,但我可能在内存中有数百个这样的对象,我不想创建这么长的配置文件。我想从代码中创建appender和logger。我查找了工作代码示例但没有找到任何内容。

我尝试使用RollingFileAppender.createAppender,但没有找到如何将它附加到logger并且无法获得此函数参数的正确值。 请帮助您使用代码\配置如何为每个对象属性创建单独的日志文件。

可能可以使用log4j2.xml中的appender \ logger名称中的通配符或使用渲染器来完成吗?

2 个答案:

答案 0 :(得分:1)

如果基于“book”分割日志文件是您正在寻找的,而不是创建一个非常特定的appender或以编程方式配置log4j来处理它,您应该看看MDC。

通过正确的MDC设置,它应该是直接根据MDC内容分割日志文件(例如在LogBack中,有一个SiftingAppender。我相信有类似的第三方appender做同样的事情)

答案 1 :(得分:0)

您可以在#initialize(String contextName, ClassLoader loader, String configLocation)中使用静态方法org.apache.logging.log4j.core.config.Configurator(请参阅来源here)。 (您可以为类加载器传递null。)

请注意,此类不属于公共API,因此 您的代码可能会因任何次要版本 而中断。