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

在log4j2中创建自定义附加程序的首选方法是什么?

杨征
2023-03-14

log4j2留档显示了生成自定义组件(如附加程序、过滤器和查找)的首选方法。但是,还不清楚如何确保这些自定义组件被日志框架拾取并可由日志配置使用。

在类路径中放置了一个带有正确注释的自定义appender之后,我还需要做些什么才能开始将其包含在我的log4j2中。xml文件,并已被日志框架拾取?

为了提供一个例子,如果我用以下注释custon appender:

@Plugin(name = "Stub", category = "Core", elementType = "appender", printObject = true)

我该如何在log4j2中这样拾取和使用它。xml配置:

    ...
    <Appenders>
      <Stub name="stub">
      ...
      </Stub>
      ...
    </Appenders>
    ...

共有2个答案

卫深
2023-03-14

我还不能发表评论,所以我写这篇文章作为回答。

不再支持配置元素中的属性(从版本2.0-rc2开始),请参阅以下答案:https://stackoverflow.com/a/24931395/3145863.

它应该包含在log4j的2.0.1版本中(https://issues.apache.org/jira/browse/LOG4J2-741)

现在,我建议您使用Maven来构建您的项目。

景鹏飞
2023-03-14

您需要将包名称(如果有多个,则在逗号分隔的列表中)放在log4j2.xml.的Configuration元素的属性中

例如。

<Configuration status="trace" packages="com.mycomp.myproject.appenders">
...

有关更多信息,请参阅Log4j2配置文档。

 类似资料:
  • 问题内容: 我在log4j2中创建了一个自定义附加程序。使用自定义追加程序时,出现以下错误:“ ERROR试图追加到未启动的追加程序”。任何帮助表示赞赏。 问题答案: Log4j 2将检查每个日志事件附加器是否处于可用状态。您看到的错误是Log4j检测到尚未准备好使用附加程序。 一些附加器需要进行准备才能使用。在生命周期的方法是其中追加程序可以做初始化的地方。Log4j不会将事件路由到未处于STA

  • 类似地,我们如何在log4j2中创建自定义的appender,因为我们没有AppenderSkelton类要扩展,而所有其他appender都扩展AppenderBase类。

  • 我正在尝试在log4j2中编写自己的RewritePolicy。文件指出: 然而,我不知道如何将它注入我的配置文件。我如何使它在运行时工作?

  • 问题内容: 我正在尝试在Log4j2中编写自己的RewritePolicy。该文档指出: RewritePolicy是一个接口,允许实现在将LogEvent传递给Appender之前检查并可能对其进行修改。RewritePolicy声明一个必须执行的名为rewrite的方法。该方法通过LogEvent传递,并且可以返回相同事件或创建一个新事件。 这是我的 java类 : 这是我的 yaml配置 文

  • 问题内容: 在JavaScript中定义枚举的首选语法是什么?就像是: 还是有更好的成语? 问题答案: 从1.8.5开始,可以密封和冻结对象,因此将以上定义为: 要么 和瞧!JS枚举。 但是,这不会阻止您为变量分配不需要的值,这通常是枚举的主要目标: 确保类型安全性(使用枚举或其他方式)的程度更高的一种方法是使用诸如TypeScript或Flow之类的工具。 不需要引号,但为了保持一致性,我保留了

  • (另请参见是否有一种好方法可以不在C中手工编写自定义类型所需的所有12个容器函数?) 对于类,例如 公开迭代的首选方式是什么?我应该编写/(和/)成员函数? 或者这些应该是非成员函数? 是否应该同时具有常量和非常量重载? 还有什么需要考虑的吗?是否有工具/技术可以使这一点“很容易正确”并减少锅炉铭牌代码的数量? 一些相关问题/讨论包括: 自定义容器是否应该具有自由开始/结束功能 为什么在C 11中