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

将log4j 1. x和log4j 2与依赖于log4j 1. x的第三方库混合

赖渊
2023-03-14

我正在维护一个Maven项目,它使用log4j 1. x和一个大的代码库。log4j 1. x不仅在现有代码中使用,它也被项目所依赖的一些第三方库使用。

我想现在开始使用log4j 2,但我想知道它是否值得麻烦。

我知道这是可能的混合两者(参见。混合log4j 1. x和log4j 2)但是依赖log4j 1. x的第三方库怎么办,恐怕会有冲突。

所以我应该坚持使用log4j1。还是升级到log4j 2而冒着依赖地狱的风险?

共有2个答案

丁长卿
2023-03-14

似乎自从@Nitin回答了这个问题后,命名已经改变了。根据log4j站点,Maven依赖项为:

<dependencies>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-1.2-api</artifactId>
    <version>2.2</version>
  </dependency>
</dependencies>
姚培
2023-03-14

我自己也这样做过。我不认为会有任何问题。甚至我做的项目也有第三方库。

您可以简单地使用log4j-1.2-api-2.x.jar。取出旧的log4j-1.2.x.jar,用以下三个罐子代替:

  1. log4j-1.2-api-2. x-将根据旧的log4j版本处理第三方库。
  2. log4j-api-2.x.jar
  3. log4j-core-2.x.jar

此外,对于您自己的代码,您可以按照迁移步骤开始使用log4j2api,第三方库将继续使用log4j-1.2-api-2这一新旧版本之间的桥接。x、 jar(又名log4j1.x桥)

以下是官方留档:

从log4j-1. x迁移到log4j-2

 类似资料:
  • 嗨,我遇到了一些使用log4j的代码。我想移动到log4j2。从http://logging.apache.org/log4j/2.x/manual/migration.html中,我发现可以使用log4j-1.2-api.jar。我有以下问题: > 在代码中,我有一个自定义的appender(正如链接中给出的,我不应该使用类appender的内部),这意味着我不能使用log4j-1.2-api.

  • 我的项目使用的是log4j2,在运行一个使用第三方库的应用程序之前,一切看起来都很好,第三方库使用Log4J1.x。当我们的应用程序启动时,我们得到一个烦人的堆栈跟踪,涉及org.apache.log4j.ConsoleAppender上的ClassNotFoundException。我注意到我们的一个依赖项在其引用org.apache.log4j.ConsoleAppender的jar中有一个l

  • 我们添加了使用log4J 2的库。X,但我们仍在使用log4J 1。X(主要是因为我们有自己的一些应用程序和记录仪)。我被告知解决方案是发送log4J 2。x到slf4j(使用log4j-to-slf4j,版本2。X),然后slf4j到log4J 1。X,使用slf4j-log4j12,版本1。X. 这就是我刚才所做的,但我仍然得到以下信息: ERROR StatusLogger未找到log4j2

  • 我们已经添加了使用log4j2.x的库,但是我们仍然在使用log4j1.x(主要是因为我们有自己的一些附加程序和记录器的impl)。我被告知,解决方案是将log4j2.x发送到slf4j(使用log4j-to-slf4j,版本2.x),然后将slf4j发送到log4j1.x,使用slf4j-log4j12,版本1.x。 这就是我刚才所做的,但我仍然得到这样的信息: 我希望slf4j使用log4J

  • Apache ShardingSphere 在数据库治理模块使用 SPI 方式载入数据到配置中心和注册中心,进行实例熔断和数据库禁用。 目前,Apache ShardingSphere 内部支持 ZooKeeper,Etcd等常用的配置中心/注册中心。 此外,开发者可以使用其他第三方组件,并通过 SPI 的方式注入到 Apache ShardingSphere,从而使用该配置中心和注册中心,实现数

  • 我用的是log4j1。x appender用于Sentry跟踪错误记录。 我想忽略来自某些来源的警告,例如来自记录器。我可以用log4j来做这个吗。属性文件?现在看起来是这样的。 我试过了 但这不会将任何低于错误的内容记录到标准输出。