当前位置: 首页 > 面试题库 >

在运行时检索Log4J Appender的列表

姜飞飙
2023-03-14
问题内容

是否可以在运行时检索在log4j中配置的所有附加程序的列表?

我将进一步充实该方案。给定以下配置,我将如何检索所有追加程序(stdout和altstdout)?

log4j.rootLogger=error, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.altstdout=org.apache.log4j.ConsoleAppender
log4j.appender.altstdout.layout=org.apache.log4j.PatternLayout

# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.altstdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

问题答案:

如果要访问为所有记录器配置的所有附加程序,则必须执行以下操作

for (Enumeration loggers=LogManager.getCurrentLoggers(); loggers.hasMoreElements(); )  {
    Logger logger = (Logger) loggers.nextElement();
    for (Enumeration appenders=logger.getAllAppenders(); appenders.hasMoreElements(); )  {
        Appender appender = (Appender) appenders.nextElement();
        ...

我不知道为什么log4j没有像LogManager.getAllAppenders()这样的方法,但是它看起来很
不利。



 类似资料:
  • 问题内容: 昨晚我在玩Java8 Lambda,我想知道是否有可能在运行时检索Lambda表达式。简而言之,据我所知,Lambda表达式在运行时被转换为(静态)方法,然后使用InvokeDynamics进行调用。 让我们举一个这样的例子: 其中将是以a 作为参数的自定义方法。在此方法内部,在这种情况下,如何以类似于Lambda表达式()的形式检索参数? 我尝试使用ASM5_BETA读取参数类的生成

  • 问题内容: 有没有办法在运行时(从代码中)知道变量的名称?还是在编译过程中忘记了变量的名称(是否使用字节码)? 例如: 注意 :我说的是普通数据类型的变量(,,等) 问题答案: 这里是一个基本的(也许很奇怪)函数,它显示了参数的名称…这个想法是分析代码并搜索对该函数的调用(在 init 方法中添加它可以帮助找到实例名称,尽管带有一个更复杂的代码分析) 请注意:如下面的示例所示,从调用代码中获取多行

  • 在浏览如何在Java中使用标记接口时,我从ObjectOutputStream类中找到了writeObject方法。它接收 Object 的实例作为输入,并且仅当给定参数是可序列化的实例时才执行序列化。 为什么writeObject方法不接收Serializable的实例作为输入,而不是Object,以便在编译时进行类型检查?将参数类型设为Object并针对Serializable执行instan

  • 在Visual Studio代码中: 我已经正确配置了OpenJDK 14。当我试图运行我的项目时,我收到以下错误:java。lang.UnsupportedClassVersionError:(类文件版本56.65535)是使用不受支持的预览功能编译的。这个版本的Java运行时只识别类文件版本58.65535的预览功能 这个类是一个依赖项,它存储在Nexus存储库中,所有这个项目都是用JDK 1

  • 我们试图通过命令行在版本6.3上构建IBM MobileFirst项目,但总是得到一个构建失败:C:\Program Files\IBM\MobileFirst-CLI\MobileFirst-CLI\Node_Module\Generator-Worklight-Server\lib\build.xml:341:未能检索NativeApplicationBuilder 什么是NativeAppl

  • 我有一个这种格式的数据框 我希望使用数据帧操作获得基于行的特定值的所有(索引、列)对。所有(索引、列、行值)对都是唯一的。 我研究了这个问题:pythonic方法获取索引,column for value==1 虽然这个问题和我的问题完全一样,但这个问题的答案有点模糊,我无法根据这些答案得到我想要的。 我也看过类似的: a) 从数据框中选择特定索引、列对 b) Python:获取与特定值匹配的行的