【问题标题】:How to upgrade Priority to log4j-2?如何将优先级升级到 log4j-2?
【发布时间】:2023-03-06 04:29:01
【问题描述】:

我正在尝试将 log4j 升级到 log4j2。我正在尝试升级的特定代码行是:

log(targetClass, Priority.DEBUG_INT, message, null);

静态字段Priority.DEBUG_INT 在新的Priority 中不再可用。相反,它看起来像 getPriority(Facility facility, org.apache.logging.log4j.Level level) 静态方法用于访问优先级 int 值,DEBUG 可以指定为 Level

但是,此方法还需要指定 Facility。调用getPriority时如何知道指定哪个Facility


旧优先级:https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Priority.html
新优先级:https://logging.apache.org/log4j/2.x/log4j-core/apidocs/org/apache/logging/log4j/core/net/Priority.html
新设施:https://logging.apache.org/log4j/log4j-2.8/log4j-core/apidocs/org/apache/logging/log4j/core/net/Facility.html

【问题讨论】:

  • this?如果这些是您的消息,它肯定看起来像 1

标签: java log4j log4j2


【解决方案1】:

假设您正在谈论 Log4j 1 的 Category.log(String, Priority, Object, Throwable),看起来这些 Priority 类是相当(如果不是完全)无关的。 Log4j 1 的Priority 实际上是level(实际上它有一个子类Level)。

因此,您必须查看 Log4j 2 的 Logger 类以查看是否有任何带有 Level 参数的方法匹配,但似乎没有相同的替代方案(logMessage 可能除外,但这似乎相当低级别)。

但是,您应该检查参数callerFQCNtargetClass 参数是否确实需要。看起来它旨在查找记录器方法的调用者,并且可能主要用于扩展 Log4j 1 的记录库。除非您确实在升级此类库,否则我会假设该方法被滥用并且常规 Log4j 2 @ 987654333@ 也会做得很好。不过,如果您能提供更多上下文,它会有所帮助。

【讨论】:

    猜你喜欢
    • 2014-07-23
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 2022-08-05
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多