当前位置: 首页 > 知识库问答 >
问题:

SLF4J记录器未执行{}替换

方德宇
2023-03-14

我目前在班上使用slf4j记录器:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

尽管我在代码中使用{}替换,如下所示:

logger.info("User {} successfully logged in to the system",u.getEmail());

请在下面检查我的登录配置:

<encoder>
    <pattern>%d [%thread] %-5level %logger{36} H:${HOSTNAME} - SC:%X{optionalParam} %msg%n</pattern>
</encoder>

即使我使用的是最新的稳定版本slf4j 1 . 7 . 25 ,< code > { } 仍然没有被正确替换。

以下文本是logger.info的输出:

“用户{}成功登录到系统

我使用LoggerFactory创建记录器:

Logger logger = LoggerFactory.getLogger(CryptoWorks.class);

共有1个答案

谭绍晖
2023-03-14

经过一些调查,我发现问题出在logback使用的编码器模式上。

我将编码器模式更改为:

 <encoder>
        <pattern>%d [%thread] %-5level %logger{5} H:${HOSTNAME} - %msg%n</pattern>
 </encoder>

一切都开始相应地工作,现在{}替换正在成功执行。

 类似资料:
  • 我正在Scala中做一个项目,我正在使用slf4j和Logback进行日志记录。现在,日志初始化似乎不是线程安全的。作为一种解决方案,slf4j正在创建替代记录器,即NoOp记录器,该记录器吞咽初始化期间生成的日志语句。slf4j主页就此问题声明: 替代记录器是在底层日志记录系统的默认配置阶段创建的 高度可配置的日志系统(如logback和log4j)可能会创建在其自身初始化期间调用记录器的组件。

  • 我已将 Log4J2 添加到我的应用程序中。我通过LIB将所有Log4J2.jar文件复制到,并创建了Log4J2.xml文件来支持它。我的代码已更新为导入必要的日志管理器和记录器 API。然后,我添加了静态的最终记录器方法,并在我的代码中调用了记录器 API。一切都在Eclipse中编译文件。我继续在 DEV 计算机上启动服务器以对其进行验证。启动服务器后,我收到以下错误: 我的配置有什么问题?

  • 我在一个类中创建了3个不同的slf4j记录器: 奇怪的是,即使在调试级别配置了X.Y.Z.MyClass,MyClass-a和MyClass-b记录器也不是在调试级别记录日志,而是在配置的根级别记录日志(在我的例子中是info)。如下所示,即使为-a和-b指定特定的记录器也不起作用。在我将根更改为debug之前,它们不会在debug级别进行日志记录。真的被这个难住了,有什么想法吗?

  • 问题内容: 我们在项目中使用LogBack,我想根据一些数据库值配置logger,即如果某个DB值设置为true,则logger应该同时使用文件和数据库附加程序,如果为false,则logger必须仅使用DB附加程序, 我也想保留使用静态最终记录器,因此不会在每次调用记录器时都创建一个新实例, 那我该怎么做呢? 问候, 问题答案: 您应该按照本示例中的说明以编程方式配置Logback 。

  • 我有一个使用slf4j进行日志记录的应用程序。现在我想添加一个功能,每当我记录错误时,就会调用一个特定的url。目前,我在应用程序级别添加了一个包装器方法,该方法发送http请求,然后调用logger方法。但这样我就错过了一些输出,一些异常只是被记录下来,而没有发送相应的请求。我正在尝试创建我的自定义logger类。我的问题是应该扩展哪些类(或要实现的接口)。我无法扩展Logger类,因为它的构造

  • 我想在我的类中使用lombok+@slf4j添加一个额外的记录器。当前,我正在使用@slf4j,它创建 私有静态最终org.slf4j.logger log=org.slf4j.loggerFactory.getLogger(logExample.class)。 我正在使用这个标准日志记录,我想创建另一个日志记录程序在类中的特定日志记录。 若要将特定日志输出到单独的文件,请执行以下操作。这是手动操