我们如何将更高版本的 Log4j 设置为 grails 应用程序

Posted

技术标签:

【中文标题】我们如何将更高版本的 Log4j 设置为 grails 应用程序【英文标题】:How can we set a higher version of Log4j to grails app 【发布时间】:2022-01-17 19:48:08 【问题描述】:

我的 grails 应用程序中有我的 log4j 设置,版本为 2.4.3。我在 lib 文件夹中的 log4j 版本是 1.2.17(grails 2.4.3 的兼容版本)。由于 log4j 漏洞利用问题,我需要将 log4j 版本升级到 2.16.0。如何进行必要的配置以将我现有的 grails 应用程序指向最新的 log4j?

【问题讨论】:

Log4j 1.2.x 不易受到此漏洞的攻击。它不包含被利用的功能。只有版本 2.x 我建议将问题改写为将 CVE 排除在外,只询问如何升级 log4j,或者将升级完全排除在外并询问有关 CVE 的问题。将两者结合起来会让你得到一个真正的答案变得复杂,因为大多数人不会同意“由于 log4j 漏洞利用问题,我需要将我的 log4j 版本升级到 2.16.0。”,原因是上面提到的@JoshuaMoore。跨度> @JoshuaMoore 但我的问题仍然没有得到解答。有没有办法从 grails 内置版本更改 log4j 版本 “有没有办法从 grails 内置版本更改 log4j 版本” - 是的。您可以在 BuildConfig.groovy 文件中表达对不同版本的依赖。 @JoshuaMoore 查看网络:mvnrepository.com/artifact/log4j/log4j,这里说的是漏洞 【参考方案1】:

在 BuildConfig.groovy 文件中,通过以下几行,您可以将 log4j 的版本升级到“依赖项”部分:

compile 'org.apache.logging.log4j:log4j-core:2.16.0'

compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.16.0'

但是,当我添加依赖时,旧版本的log4j(1.2.17)没有被删除,所以我不确定使用的是什么版本。

【讨论】:

我认为这不会有效地升级应用程序中的 log4j,我有点惊讶它对你有用。 1.2.17 仍然存在的原因是它是一个完全不同的工件,具有不同的工件名称(log4j 与 log4j-core)。我希望必须将排除项添加到 BuildConfig.groovy 以升级应用程序中的 log4j。 因为您使用的是 1.2.17。如果您在 war 文件中删除此 jar,则日志不起作用 @Diego Rossi 你为 mavenRepo URL 准备了什么?添加此内容时,我不断收到 403 Forbidden or Permanent redirect 错误。 @Matt 我在第一个示例中添加了它。但是没用,还是用默认版本。 @DiegoRossi 我了解,我认为您有一个很好的起点,然后可能通过添加排除项作为提及可能有效。我想玩弄它。您的存储库是什么样的?我显然缺少下载 2.16.0 版本的存储库。

以上是关于我们如何将更高版本的 Log4j 设置为 grails 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

log4j2之日志记录器

log4j2低版本jndi漏洞修复及测试

log4j基础

如何在 iOS 11 的导航栏上设置大标题?

iOS 7 及更高版本:为每个视图控制器设置状态栏样式

Log4j使用教程