slf4j 相关问题

Simple Logging Facade for Java(SLF4J)用作各种日志框架的简单外观或抽象层。如果您尝试为应用程序配置日志记录,还请包含您正在使用的实际日志记录框架的标记。

设置logback过滤器产生异常

我一直在尝试在 Eclipse Equinox RT 应用程序中设置 logback 过滤器,如下所示: 我一直在尝试在 Eclipse Equinox RT 应用程序中设置 logback 过滤器,如下所示: <?xml version="1.0" encoding="utf-8" standalone="no"?> <configuration debug="true"> <appender name="myappender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>./logs/myapp.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <fileNamePattern>./logs/myapp_%i.log</fileNamePattern> <minIndex>1</minIndex> <maxIndex>10</maxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>10MB</maxFileSize> </triggeringPolicy> <filter class="ch.qos.logback.core.filter.EvaluatorFilter"> <evaluator> <expression>return message.contains("buy: foo") || message.contains("sell: bar");</expression> </evaluator> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <encoder> <pattern>%d{dd/MM/yyyy HH:mm:ss} | %-5level | %msg%n%ex{short}</pattern> </encoder> </appender> <root level="ALL"> <appender-ref ref="myappender"/> </root> </configuration> 我在 gradle 子项目中有此配置,我将其称为“osgi-log”,以供参考。 plugins { id 'java-library' version '1.0.0' } group 'myapp' version '2.0.0' dependencies { api group: 'org.slf4j', name: 'slf4j-api', version: '2.0.5' implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.3.5' implementation group: 'ch.qos.logback', name: 'logback-core', version: '1.3.5' implementation group: 'org.codehaus.janino', name: 'janino', version: '3.1.12' implementation group: 'org.ow2.asm', name: 'asm', version: '5.2' implementation group: 'org.ow2.asm', name: 'asm-commons', version: '5.2' implementation group: 'org.ow2.asm', name: 'asm-util', version: '5.2' implementation group: 'org.apache.aries.spifly', name: 'org.apache.aries.spifly.dynamic.bundle', version: '1.3.5' } “osgi-log”正在其他 gradle 子项目中设置,如下所示: dependencies { implementation group: 'myapp', name: 'osgi-log' } 当我运行应用程序时,出现以下异常: ERROR in ch.qos.logback.classic.boolex.JaninoEventEvaluator@75243b22 - Could not start evaluator with expression [return message.contains("buy: foo") || message.contains("sell: bar");] org.codehaus.commons.compiler.CompileException: Line 1, Column 1: A class "ch.qos.logback.classic.Level" could not be found at org.codehaus.commons.compiler.CompileException: Line 1, Column 1: A class "ch.qos.logback.classic.Level" could not be found 观察: 如果删除过滤器,日志将按预期工作。正在抛出异常 然后我才添加过滤器。 正在通过系统环境加载配置文件-Dlogback.configurationFile=file:logback.xml。 这是一个java 8应用程序。 任何其他建议或更简单的方法来实现相同的结果,将受到欢迎 - 我想过滤事件并只注册那些匹配某些字符组的事件。 加: 如果有人能帮助我理解为什么 Apache SpiFly 不能动态解析 Janino 实现的所有依赖项,我将不胜感激? 我实际上找到了解决办法。 这似乎是 Janino 依赖端的一个已知问题。 为了使其工作,需要调整 MANIFEST.MF 和 janino 中的 commons-compiler 添加以下行: DynamicImport-Package: ch.qos.logback.*,org.slf4j 参考资料: https://github.com/qos-ch/logback-contrib/pull/29/files https://github.com/qos-ch/logback-contrib/issues/28

回答 1 投票 0

Kotlin 使用 slf4j 进行日志记录的最佳方式

我有一个 Spring Boot 项目,其默认日志配置使用 logback。我一直在我的应用程序中使用这种方法进行日志记录: logger.info(“获取用户分页:过滤器{}”...

回答 4 投票 0

Scala 日志记录行号与使用 slf4s/slf4j 不匹配?

有谁知道是否有一种方法可以进行日志记录,将真实的行号输出到控制台? 我试图在这里进入 Scala,但无法获得我所依赖的这样的基本内容......

回答 4 投票 0

如何关闭 Icefaces 日志记录?

我需要关闭 Icefaces 日志记录。我已经添加了记录器引用,如下所示,但我无法关闭 Icefaces 日志记录。

回答 0 投票 0

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。

回答 1 投票 0

如何在 Java 应用程序中使用 Log4j 和 SLF4J 防止重复的日志消息?

我正在开发一个 Java 应用程序,该应用程序使用 SLF4J 进行日志记录,并使用 Log4j 进行底层日志记录实现。该应用程序经常快速连续地记录重复的消息,导致

回答 1 投票 0

使用 Log4j2 在反应式 Spring Boot 中根据请求标头动态设置每个请求的 DEBUG 或 INFO 日志记录级别

我正在开发一个使用 Log4j2 作为日志记录框架的反应式 Spring Boot 应用程序。默认情况下,我的应用程序在 INFO 级别进行日志记录,并且我在 application.yml 中设置了日志记录级别 我...

回答 1 投票 0

Quarkus:找到多个 SLF4j 绑定,但无法定位

在我的 quarkus java 应用程序中,启动时我从 slf4j 收到以下消息: SLF4J:类路径包含多个 SLF4J 绑定。 SLF4J:在 [jar:file:/C:/Users/.../quarkus-app/li... 中找到绑定...

回答 1 投票 0

有没有办法为failsafe/surefire Maven 插件的每个分支编写单独的日志?

我们使用maven-failsafe-plugin与同时运行集成测试,因此我们将在不同进程中拥有多个JVM并行运行测试。 故障安全插件...

回答 1 投票 0

@Slf4j 如果类具有“org”字段,则会生成“无法引用非静态变量 org”

为什么,如果我的类有org字段,我就不能使用@Slf4j Lombok日志注释。以下代码将在第 3 行产生编译错误: MyClass.java:[3,1] 非静态变量 org 不能是

回答 1 投票 0

用log4j发送结构化日志字段的方式是什么?

使用 slf4j 我可以执行以下操作: logger.atInfo().setMessage("我的消息").addKeyValue("foo", "bar").addKeyValue("code", 42).log() 与 Azure 一起使用时

回答 1 投票 0

日志未写入log4j2-spring.xml文件中指定的文件名中

Spring boot版本3.3.3,在我的linux系统中,我将在/opt下有两个tomcat实例,一个名为/opt/tomcat(这是开发环境,在conf/catalina.properties中与spring一起指定。

回答 1 投票 0

构建服务器挂起:将当前配置注册为安全回退点

我在我的项目中使用SLF4J(1.6.1)+ logback(1.1.2)。在进行构建时,我注意到在获得“将当前配置注册为安全回退点”后,此日志记录了我的构建服务器...

回答 1 投票 0

如何将MDC数据从主线程传递到Web服务器http线程

我正在使用 Spring Boot 和 MDC 来记录 REST API 应用程序中每个日志条目的附加上下文。我在主线程中使用MDC,但是数据没有传递到创建的http线程

回答 1 投票 0

如何将MDC数据从主线程传递到Web服务器http线程

我正在使用 Spring Boot 和 MDC 来记录 REST API 应用程序中每个日志条目的附加上下文。我在主线程中使用MDC,但是数据没有传递到创建的http线程

回答 1 投票 0

如何将MDC从主线程传递到非异步线程

我正在使用 Spring Boot 和 MDC 来记录 REST API 应用程序中每个日志条目的附加上下文。我已经在主线程中设置了 MDC,但是数据没有传播到正在运行的子线程...

回答 1 投票 0

如何配置 slf4j 和 logback 以允许一个类记录到单独的文件?

我有一个多线程的 Java 类,我希望它记录到一个单独的文件中。我正在使用 Dropwizard,它使用 logback 并在我的 YAML 文件中进行配置,如下所示: 记录: # 默认值

回答 1 投票 0

为什么dnsjava需要slf4j和logback?

所以我(尝试)开发一个 kotlin 控制台应用程序,用户可以在其中使用电子邮件注册,为了验证此电子邮件,我使用 dnsjava 库,但这需要我使用 slf4j a...

回答 1 投票 0

log4j的一些问题

我在 Java 项目中遇到与 Log4j 相关的错误。我对我的项目结构进行了一些修改,包括更新 Maven 依赖项、调整 pom.xml 文件以及

回答 1 投票 0

使用 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):默认为无操作...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.