将 curity idsvr 从 log4j2 迁移到 logback

Migrating curity idsvr from log4j2 to logback

Curity 当前使用 log4j2 作为默认记录器。 有没有办法把它改成logback.?

目前我已经构建了一个自定义 Docker 图像,执行以下步骤。 (使用基本图像 curity.azurecr.io/curity/idsvr:6.7.2

  1. log4j2.xml 文件替换为具有 logback 配置的 logback.xml 文件路径 /opt/idsvr/etc/

  2. 删除了路径 /opt/idsvr/lib 中现有的 log4j jar 文件并替换为下载的 logback jar 文件来自 https://logback.qos.ch/download.html

完成上述步骤后,我将自定义图像作为容器启动。但是我收到以下错误消息。

your customer that you accept the terms of the Curity License Agreement.

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
idsvr was installed into /opt/idsvr. You can begin using it by starting /opt/idsvr/bin/idsvr
openjdk version "11.0.13" 2021-10-19 LTS
OpenJDK Runtime Environment Zulu11.52+14-SA (build 11.0.13+8-LTS)
OpenJDK 64-Bit Server VM Zulu11.52+14-SA (build 11.0.13+8-LTS, mixed mode)
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/impl/LogEventFactory
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
    at java.base/java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(Unknown Source)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(Unknown Source)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(Unknown Source)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    at se.curity.identityserver.app.LogInitializer.initializeLoggers(LogInitializer.java:54)
    at se.curity.identityserver.app.Bootstrapper.main(Bootstrapper.java:118)
    at se.curity.identityserver.app.Bootstrapper.main(Bootstrapper.java:100)
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.core.impl.LogEventFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 12 more

如有任何帮助,我们将不胜感激。谢谢..

否,不支持用 Logback 替换 Log4j。 use of Log4j在产品中运行的很深,用户无法替代。我建议就导致您想要更换日志子系统的 ❤️ 的问题提出另一个问题。也许那有一个不需要心脏手术的解决方案。