Simple Logging Facade for Java(SLF4J)用作各种日志框架的简单外观或抽象层。如果您尝试为应用程序配置日志记录,还请包含您正在使用的实际日志记录框架的标记。
Log4j 从 2.23.1 更新到 2.24.0/1 -> 日志记录消失了
我有一个又大又旧的遗留项目,我们非常痛苦地更新到 log4j 2,并且使用了很多桥梁。 我有一个又大又旧的遗留项目,我们非常痛苦地更新到 log4j 2,并且使用了很多桥梁。 <!-- LOGGING --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-1.2-api</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j2-impl</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-web</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${slf4j.version}</version> </dependency> slf4j版本是2.0.16 log4j 2.24.0 的发行说明中是这样的文字: 桥梁 JUL-to-Log4j API 和 Log4j 1-to-Log4j API 将不再 可以修改Log4j Core默认的配置。如果这样的话 需要某个功能,必须显式启用它。 从 2.23.1 更新到 2.24.0 或 2.24.1 后,日志记录消失了。 我在文档中没有找到任何有关如何启用此桥接功能的提示。 注意: log4j-1.2-api 和 log4j-jul 的“桥接”功能在 2.24.0 中并未禁用。这些桥仍然开箱即用,可将使用 Log4j 1 或 java.util.logging 编写的日志语句转发到 Log4j 2 API。 被禁用的是使用这些旧版 API 加载和修改日志记录实现的配置的能力。其背后的基本原理是,许多legacy库通过调用j.u.l.Logger.setLevel()或org.apache.log4j.PropertyConfigurator.configure()等方法来破坏用户配置。由于无法修改这些遗留库,因此桥接器的“配置”部分成为选择加入。 问题的可能原因 许多应用程序和库(可能包括您的应用程序和库)都包含与此类似的代码片段: org.apache.log4j.PropertyConfigurator.configure( Main.class.getClassLoader().getResourceAsStream("log4j.properties")); 自从 Log4j 1.0 的第一个稳定版本已经自动加载 log4j.properties 文件并允许用户使用 log4j.configuration 系统属性指定备用位置以来,从未需要过这样的代码片段。此类片段应被删除并替换为以下选项之一: 以本机 Log4j 2 Core 配置格式之一编写配置文件,并将其放置在类路径上的标准位置之一中。这是推荐的方式。 以 Log4j 1 格式编写配置文件并将 log4j.configuration 系统属性指向它。如果您有很多用户并且不想强迫他们使用 Log4j 2 格式,则此选项可能很有用。如果您是唯一配置日志记录的人,则更容易切换到您选择的本机格式。 以 Log4j 1 格式编写配置文件并将 log4j1.compatibility 系统属性设置为 true。 直接在代码中使用 o.a.l.l.core.config.Configurator。 如果您确实想保留代码片段(我不建议这样做),您应该将 log4j1.compatibility 系统属性设置为 true。
如何在 Java 应用程序中使用 Log4j 和 SLF4J 防止重复的日志消息?
我正在开发一个 Java 应用程序,该应用程序使用 SLF4J 进行日志记录,并使用 Log4j 进行底层日志记录实现。该应用程序经常快速连续地记录重复的消息,导致
使用 Log4j2 在反应式 Spring Boot 中根据请求标头动态设置每个请求的 DEBUG 或 INFO 日志记录级别
我正在开发一个使用 Log4j2 作为日志记录框架的反应式 Spring Boot 应用程序。默认情况下,我的应用程序在 INFO 级别进行日志记录,并且我在 application.yml 中设置了日志记录级别 我...
在我的 quarkus java 应用程序中,启动时我从 slf4j 收到以下消息: SLF4J:类路径包含多个 SLF4J 绑定。 SLF4J:在 [jar:file:/C:/Users/.../quarkus-app/li... 中找到绑定...
有没有办法为failsafe/surefire Maven 插件的每个分支编写单独的日志?
我们使用maven-failsafe-plugin与同时运行集成测试,因此我们将在不同进程中拥有多个JVM并行运行测试。 故障安全插件...
@Slf4j 如果类具有“org”字段,则会生成“无法引用非静态变量 org”
为什么,如果我的类有org字段,我就不能使用@Slf4j Lombok日志注释。以下代码将在第 3 行产生编译错误: MyClass.java:[3,1] 非静态变量 org 不能是
使用 slf4j 我可以执行以下操作: logger.atInfo().setMessage("我的消息").addKeyValue("foo", "bar").addKeyValue("code", 42).log() 与 Azure 一起使用时
日志未写入log4j2-spring.xml文件中指定的文件名中
Spring boot版本3.3.3,在我的linux系统中,我将在/opt下有两个tomcat实例,一个名为/opt/tomcat(这是开发环境,在conf/catalina.properties中与spring一起指定。
我在我的项目中使用SLF4J(1.6.1)+ logback(1.1.2)。在进行构建时,我注意到在获得“将当前配置注册为安全回退点”后,此日志记录了我的构建服务器...
我正在使用 Spring Boot 和 MDC 来记录 REST API 应用程序中每个日志条目的附加上下文。我在主线程中使用MDC,但是数据没有传递到创建的http线程
我正在使用 Spring Boot 和 MDC 来记录 REST API 应用程序中每个日志条目的附加上下文。我在主线程中使用MDC,但是数据没有传递到创建的http线程
我正在使用 Spring Boot 和 MDC 来记录 REST API 应用程序中每个日志条目的附加上下文。我已经在主线程中设置了 MDC,但是数据没有传播到正在运行的子线程...
如何配置 slf4j 和 logback 以允许一个类记录到单独的文件?
我有一个多线程的 Java 类,我希望它记录到一个单独的文件中。我正在使用 Dropwizard,它使用 logback 并在我的 YAML 文件中进行配置,如下所示: 记录: # 默认值
所以我(尝试)开发一个 kotlin 控制台应用程序,用户可以在其中使用电子邮件注册,为了验证此电子邮件,我使用 dnsjava 库,但这需要我使用 slf4j a...
我在 Java 项目中遇到与 Log4j 相关的错误。我对我的项目结构进行了一些修改,包括更新 Maven 依赖项、调整 pom.xml 文件以及
使用 Eclipse 4.31 的 logback 记录器 (1.5.0) -> 未找到 SLF4J 提供程序
我使用 eclipse 4.31 和 slf4j.api 2.0.12 和 ch.qos.logback.classic 1.5.0。但如果我想记录一些东西,我会得到以下信息: SLF4J(W):未找到 SLF4J 提供程序。 SLF4J(W):默认为无操作...
Spring Boot log4j ClassPath 包含多个 `SLF4J` 绑定
我有一个 Spring Boot 项目,我想将 SLF4J 添加到我的项目中。 我创建了一个名为 log4j.properties 的文件,这是它的正文: log4j.rootLogger=全部,标准输出 log4j.appender.STDOUT= org.apache.log4j.
我使用 slf4j 登录我的项目。我想使用 MDC 来记录用户 ID 参数。所以我检查教程和文档,并编写如下代码: MDC.put("密钥", userId) userId实际上是一个字符串。 ...
执行 testng 套件时出现错误“线程“main”java.lang.NoClassDefFoundError:org/slf4j/LoggerFactory 中出现异常”
我尝试使用带有 Selenium 的 Eclipse 新设置来执行简单的 TestNG 脚本。 虽然使用相同的设置我可以运行其他 Java 类,但是当尝试运行 TestNG 套件时我...