问题标签 [slf4j-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5536 浏览

java - 如何在 slf4j 中格式化异常?

从我在网上找到的许多示例、文档和此处的堆栈溢出中,在 slf4j 中连接字符串的正确方法是使用内置的字符串格式。

例如 :

我也尝试了不格式化,它产生了相同的结果:

出于某种原因,这对我不起作用,我不知道我错过了什么。如果我们传递一个对象,我们是否使用不同的格式?

上面的示例正在打印以下日志消息:

而不是我使用常规连接时收到的预期消息:

或者当我手动调用 .toString()

根据 Sonar 的说法,最后一个选项不正确,因为:

因为 printf 样式的格式字符串是在运行时解释的,而不是由编译器验证的,所以它们可能包含导致创建错误字符串的错误。此规则在调用 java.util.Formatter、java.lang.String、java.io.PrintStream、MessageFormat 和 java.io 的 format(...) 方法时静态验证 printf 样式格式字符串与其参数的相关性.PrintWriter 类和 java.io.PrintStream 或 java.io.PrintWriter 类的 printf(...) 方法。

AppException 类如下:

我正在构建我的记录器,如下所示:

我正在使用slf4j-api 1.7.22

0 投票
1 回答
193 浏览

log4j2 - 一旦用户编辑日志文件,将停止将 tomcat 日志附加到 catalina.log

Tomcat 9 将其日志附加到 catalina.log 很好。由于 catalina.log 包含太多内容,为了调试我的应用程序,我只需要新鲜的日志。

所以我从日志文件中删除了所有行并保存了它。但在那之后不久,tomcat 停止向 catalina.log 写入日志,直到我再次重新启动我的 tomcat 服务器。

重新启动后,它再次正常工作,如果我再次删除行,也会发生同样的情况。我正在使用配置为使用 log4j2 实现的 slf4j。这是一个 Spring Boot 应用程序。Log4j2 是使用 xml 文件配置的。xml 文件与此线程答案中的xml 文件相同。

如何在不中断tomcat的情况下删除日志内容?

谢谢你。

0 投票
0 回答
1706 浏览

java - slf4j 日志不在 server.log 文件中打印,而是在控制台上打印 - wildfly

我有satndalone.xml日志配置,并配置pom.xmlslf4j依赖项。使用lombok.extern.slf4j.Slf4japi annotations( @Slf4j) 登录 java 类。

server.log问题是使用此 Slf4j 的日志正在控制台上打印,但不在wildfly server.

我已经给出了日志配置standalone.xml(以及logging.properties其配置值将来自standalone.xml)和日志配置pom.xml

java类中的记录器:

在 Wildfly 服务器中从standalone.xml 记录配置:

日志记录属性:

pom.xml

当我配置standalone.xml <console-handler>log <level>toERROR<periodic-rotating-file-handler>log <level>to 时TRACE,我希望我的 java 代码中 slf4j 的调试日志log.debug("authenticateUser = " + currentUser);打印在server.log文件中,但这是在控制台上打印的。

2019-01-04 DEBUG [default task-8] (AuthenticateABC.java:98) - authenticateUser = APPUSER

我尝试了几种日志级别和处理程序的组合,但仍然没有运气,不知道出了什么问题。

0 投票
1 回答
302 浏览

java - Velocity 2.0 迁移 LogChute 替换

我正在尝试从 1.7 迁移到 Velocity 2.0。在阅读了一些文档之后,我看到 Velocity 现在已经转移到 SLF4j API 进行日志记录。现在我不是如何使用 SLF4j 的专家,但由于它有一些文档,我相信我会弄明白的。

我有一个实现 LogChute 接口的类。在阅读了一些关于新日志框架的信息后,将:

是合适的替代品吗?我只想知道我一开始的分析是否正确,然后再把它弄错了。

0 投票
1 回答
87 浏览

java - 如何使用 slf4j 登录公共共享库?

我正在编写一个公共共享库,并希望让 slf4j 日志记录来打印一些日志,而不依赖于特定的实现,以便库的用户可以使用他们自己的日志记录框架。

但是我收到“未指定 slf4j 提供程序”的警告。如何在不依赖于具体实现的情况下拥有带有日志记录的公共图书馆。

0 投票
3 回答
4519 浏览

java - java.lang.NoClassDefFoundError: Lorg/slf4j/Logger

我正在使用带有 maven 支持的 Intellij 启动 tomcat。一旦我添加了以下 tomcat maven 依赖项:

启动时,它将抛出此异常:

我检查了我的依赖slf4j是:

它表明它具有类org.slf4j.Logger

如果我删除了 tomcat 依赖项,一切都会再次正常运行。

在此处输入图像描述

更新:

我的pom文件:

http://maven.apache.org/xsd/maven-4.0.0.xsd">4.0.0

MVN 输出:

0 投票
3 回答
1077 浏览

java - 没有实现时如何获取 slf4j 控制台输出?

我们有许多“父”(或“库”)项目。他们在类路径中只有 slf4j-api,但没有像 logback 这样的实现。

我经常想写一个快速的临时 main 方法来测试一些东西,并得到

如何在不添加日志记录实现依赖项的情况下获得输出?

0 投票
1 回答
3308 浏览

log4j2 - 将 commons-logging 连接到 slf4j-api

想知道我应该包含的依赖关系,以将 commons-logging 连接到 slf4j-api。

通过添加以下内容,我的构建成功:

但无法启动我的服务:( 获取 java.lang.ExceptionInInitializerError ... 原因:org.springframework.beans.factory.CannotLoadBeanClassException

0 投票
0 回答
1258 浏览

java - 使用 slf4j API 的 Log42 json 日志记录

我正在尝试使用https://logging.apache.org/log4j/2.x/manual/layouts.html#JSONLayout中记录的 log4j2 找出 JSON 日志记录

一切正常,除非我试图通过使用 SLF4J 记录器对象设置objectMessageAsJsonObject=true将对象记录为 json。SLF4j 记录器只是忽略该对象。而当我使用 org.apache.logging.log4j.Logger 的实例时,它可以工作。

此功能(通过 JSON 布局将对象记录为 json)已在 Log4j2 中添加,带有 github 问题https://github.com/apache/logging-log4j2/pull/141

通过创建 org.apache.logging.log4j.message.ObjectMessage 的新实例并传递给 SLF4J 来尝试,但看起来它只是忽略了它。

//这不起作用

//这有效

更多细节可以在下面的代码部分中找到。

pom.xml

log4j2.xml

要记录为 json 的用户对象

JUnit

预期(使用 SLF4J 记录器):

实际(使用 SLF4J 记录器):

预期(使用 LOG4J 记录器):

问题

  • 是否可以使用 SLF4J 记录器使用 log4j2 JSON 布局记录对象?如果是这样,任何示例都会有所帮助。
  • 有没有更简单的方法可以将瞬间更改为人类可读的日期和时间戳格式?
0 投票
1 回答
152 浏览

java - 如何在 SLF4J 中替换 MarkerIgnoringBase

我们的代码库中有一些旧代码扩展了MarkerIgnoringBase. 由于我们正在迁移,所以我在 maven 中添加了依赖项2.0.0-alpha1

但是我看到的 MarkerIgnoringBase 类已被弃用。只是想知道这个类是否有任何直接的替代品,如果不是直接的,或者至少是我可以使用的远程类似的东西。我尝试了它的一些子类,但它们似乎完全不同。

此外,我能找到的文档很少,说明这已被弃用以及改用什么。