我需要在我的应用程序中为不同的对象实例创建单独的日志。例如,如果我们使用书籍,我需要为每本书单独的日志文件。它可以很好地处理log4j2.xml文件,但是我的内存中可能有数百个这样的对象,我不想创建这么长的配置文件。我想从代码创建附加器和记录器。我查找了工作代码示例,但什么也没找到。
我尝试使用RollingFileAppender.createAppender,但没有找到如何将其附加到记录器,并且无法获得此函数参数的正确值。请帮助工作代码\配置如何为每个对象属性创建单独的日志文件。
也许可以在log4j2.xml中的appender\logger名称中使用通配符,或者使用渲染器?
发布于 2013-07-02 05:45:24
您可以在org.apache.logging.log4j.core.config.Configurator中使用静态方法#initialize(String contextName, ClassLoader loader, String configLocation) (请参阅源代码here)。(您可以为类加载器传递null。)
请注意,此类不是public API的一部分,因此您的代码可能会与任何次要发布的中断。
发布于 2013-07-02 09:47:20
如果您正在寻找基于"book“拆分日志文件,而不是创建一个非常具体的附加器或以编程方式配置log4j来处理它,那么您应该考虑一下MDC。
通过正确的MDC设置,可以直接根据MDC内容拆分日志文件(例如,在LogBack中,有一个SiftingAppender。我相信有类似的第三方附加者做同样的事情)
https://stackoverflow.com/questions/17406485
复制相似问题