当前位置: 首页 > 知识库问答 >
问题:

如何从java代码创建log4j2 appender?

祁奇略
2023-03-14

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

我尝试使用RollingFileAppender。createAppender,但未找到如何将其附加到记录器,并且无法获取此函数参数的正确值。请帮助了解工作代码\配置如何为每个对象属性创建单独的日志文件。

也许它可以用通配符在appender\logger名称在log4j2.xml或使用渲染器?

共有2个答案

洪和平
2023-03-14

您可以在组织中使用静态方法#initialize(stringcontextname、ClassLoader、stringconfiglocation)(参见此处的源代码)。阿帕奇。登录中。log4j。果心配置。配置程序。(对于加载程序类,可以传递null。)

请注意,此类不是公共API的一部分,因此您的代码可能会因任何小版本而中断。

段干河
2023-03-14

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

通过正确的MDC设置,可以直接根据MDC内容分割日志文件(例如,在LogBack中,有一个筛选Appender。我相信也有类似的第三方Appender做同样的事情)

 类似资料:
  • 问题内容: 我寻找一种方法来为我的jpa注释实体创建ddl。我更喜欢纯Java方式。 如果可能的话,最好也生成drop语句。 问题答案: 将数据从数据库导出为sql 使用liquibase开源项目 LiquiBase是一个开源(LGPL),独立于数据库的库,用于跟踪,管理和应用数据库更改。它建立在一个简单的前提下:所有数据库更改(结构和数据)均以基于XML的描述性方式存储并检入源代码管理。 为给定

  • 问题内容: 我想从我的Java源代码创建流程图或序列图。 是否有任何插件可以帮助我做到这一点? 问题答案: 这个帖子是为流程图准备的吗?您是说序列图还是类图eUML是创建类图或序列图的好工具您可以在http://www.soyatec.com/main.php上找到它

  • 问题内容: 是否可以从迭代器创建一个Stream,其中对象的序列与通过重复调用迭代器的next()方法生成的对象的序列相同?我正在考虑的特定情况涉及TreeSet.descendingIterator()返回的迭代器的使用,但是我可以想象在其他情况下可以使用迭代器而不是它引用的集合。 例如,对于a,我们可以按照集合的排序顺序来编写并获取该集合中的对象流,但是如果我们希望它们以不同的顺序(例如,使用

  • 我需要从wsdl(使用wsdl url)为一个操作创建SOAP请求xml。我从一个web服务调用得到一个响应,我需要从这个响应中获取一些值,并将其添加到另一个web服务Soap请求中,然后再次执行一个web服务调用。因此,为了向soap请求添加新值,我需要获得完整的soap请求xml。这就是为什么我问如何从WSDD获得soap请求xml。我不能使用SoapUI,因为它每次都是动态的,所以我需要编写

  • 问题内容: 他们如何在Java中创建代理。他们是根据需要创建代理,还是创建代理并将其永久保存。 问题答案: 您可以通过两种基本方式创建代理: 通过接口使用JDK机制。看一看。 在具体的类上使用一些字节码生成/操作库。看看cglib和javassist Apache有一个很好的实用程序:commons- proxy 。它包装了许多用于创建代理的机制和框架。 这全部与动态代理有关,即在运行时创建的代理

  • 我使用jsonschema生成器基于我的POJO生成JSON模式文件。目前,我正在通过一个在<code>gradle构建</code>步骤中运行的测试来完成这项工作。这工作正常,但感觉不对,因为我所做的并不是测试任何东西。 我还找到了这个答案,其中详细说明了如何在上运行它,但这也不理想,因为它会在每次应用程序出现时毫无意义地执行它,但在我构建时不会。 因此,有没有一种方法可以告诉gradle(在中