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

如何在log4j2中手动代码配置中添加级别到appender?

乜嘉悦
2023-03-14
<Root level="trace">
  <AppenderRef ref="file" level="DEBUG"/>
  <AppenderRef ref="STDOUT" level="INFO"/>
</Root>

但我自己创建配置时却找不到方法。例如,我有consoleAppenderBuilder和RootLoggerBuilder:

AppenderComponentBuilder consoleAppenderBuilder = builder
    .newAppender("Stdout", "CONSOLE")
    .addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT);

RootLoggerComponentBuilder rootLoggerBuilder = builder
    .newRootLogger(Level.ERROR)
    .add(builder.newAppenderRef("Stdout"));

如何将控制台附加器添加到根记录器中,并为附加器定义日志级别。我问这个是因为我想添加多个附加到根记录器。

共有1个答案

闻人高卓
2023-03-14

下面是为rootlogger中的每个appender设置日志级别的一种方法-

AppenderComponentBuilder consoleAppenderBuilder = builder
    .newAppender("Stdout", "CONSOLE")
    .addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT);

RootLoggerComponentBuilder rootLoggerBuilder = builder
    .newRootLogger(Level.ALL)
    .add(builder.newAppenderRef("Stdout").addAttribute("level", Level.INFO));

如果您有多个附加符,下面的代码可以工作-

RootLoggerComponentBuilder rootLoggerBuilder = builder
    .newRootLogger(Level.ALL)
    .add(builder.newAppenderRef("Stdout").addAttribute("level", Level.INFO)).add(builder.newAppenderRef("fileAppender").addAttribute("level", Level.ERROR));

需要记住的唯一一点是,appender日志级别可以降低logger中给定的日志级别,但不能提高日志级别。

 类似资料:
  • 在log4j1.2中,您只需在运行时获取一个记录器并添加一个appender。例如,这对于测试目的很方便。我们曾经创建一个模拟appender并将其添加到记录器中。随后,我们可以做出不同的断言。 log4j2的等价物是什么? 例如,这个例子展示了其他人是如何添加测试附加器的。 log4j2页面显示了一些关于如何添加附加器的示例。但是,它们将追加器添加到整个上下文中。这似乎不同于为一个特定的记录器添

  • 使用log4j1,我能够控制单个日志记录程序级别,但属性语句似乎不能使用log4j2。我将rootLogger级别设置为DEBUG,并希望通过commons-logging抑制来自authorize.NET的大量调试日志。我正在尝试设置级别,以从http头和有线日志发出警告。 下面是详细配置记录器的log4j文档(参见“配置log4j”) 这是一个示例日志输出: 这是我当前的log4j2.prop

  • 我想将自动存档(删除)添加到日志文件中,但我很难找到一个我理解并可以添加到当前配置中的xml示例。 上面是我当前的配置。从我所读到的,我必须小心路径和目录名,这样我才能为操作系统使用正确的向前或向后斜杠字符。不确定我的安装程序如何处理这个问题。 非常感谢您对自动存档-删除语法的任何帮助。 戴夫

  • 我如何在log4j2中做到这一点?注我仍然需要使用新的属性文件(不是xml或json)。 TIA

  • 我正在尝试制作一个DnD字符生成器,部分原因是我需要一个可以通过其他方法编辑的统计列表,所以我试图在类级别添加它。我目前的代码是: 但是当我试图运行它时,我在每个“添加”行都有一个“预期标识符”错误。

  • 我需要向常规类列表中添加一个动态类,但不知道如何添加(我使用的是babel),如下所示: 有什么想法吗?