我需要为我的应用程序中的不同对象实例创建单独的日志。例如,如果我们使用书籍,我需要为每本书单独记录日志文件。它适用于log4j2.xml文件,但我可能在内存中有数百个这样的对象,我不想创建这么长的配置文件。我想从代码中创建appender和logger。我查找了工作代码示例但没有找到任何内容。
我尝试使用RollingFileAppender.createAppender,但没有找到如何将它附加到logger并且无法获得此函数参数的正确值。 请帮助您使用代码\配置如何为每个对象属性创建单独的日志文件。
可能可以使用log4j2.xml中的appender \ logger名称中的通配符或使用渲染器来完成吗?
答案 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,因此 您的代码可能会因任何次要版本 而中断。