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

如何在第三方库中找出哪个后端用于slf4j日志记录?

常茂
2023-03-14

我使用Scala库发出名为Bee Client的HTTP请求。Bee客户端,对于每个操作,都会将大量调试信息打印到控制台。它使用slf4j框架来实现这一点。

我的问题是禁用该日志记录并将其重定向到文件中。

我尝试了不同的方法来禁用java.util.logging,但都没有任何区别。最后我意识到slf4j可以使用其他后端,但我不知道如何识别它。

所以我可以使用Bee客户端的日志和源代码。如何理解它使用的是哪个日志后端?

共有2个答案

严宇
2023-03-14

通常通过查看感兴趣的依赖项的瞬态依赖项,您可以弄清楚它使用的日志框架。在许多情况下,它会使用某种java日志API,并允许您提供您喜欢的记录器实现。例如,查看您项目的这个maven构建文件:http://repo.bigbeeconsultants.co.uk/repo/uk/co/bigbeeconsultants/bee-client_2.10/latest/poms/bee-client_2.10.pom.

此链接介绍如何在项目中设置Bee客户端。基本上,我们可以从SBT依赖性中学到什么:

libraryDependencies ++= Seq(
    "uk.co.bigbeeconsultants" %% "bee-client" % "0.21.+",
    "org.slf4j" % "slf4j-api" % "1.7.+",
    "ch.qos.logback" % "logback-core"    % "1.0.+",
    "ch.qos.logback" % "logback-classic" % "1.0.+"
)

resolvers += "Big Bee Consultants" at "http://repo.bigbeeconsultants.co.uk/repo"

是它使用slf4japi和logback实现进行日志记录。您需要做的就是设置logback配置并在您的项目中列出上面列出的依赖项。

例如,在类路径的某处创建一个配置文件(可能在这里:src/main/resources/logback.xml)。将此内容添加到其中,即可完成所有设置:

<configuration>

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>myApp.log</file>

    <encoder>
      <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
    </encoder>
  </appender>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>

  <root level="debug">
    <appender-ref ref="FILE" />
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

有关如何配置logback的更多详细信息,请参阅此处。

仲高超
2023-03-14

这里解释了在运行时可以使用的另一种更通用的方法。

 类似资料:
  • 比如 kombu 这个库,我发现他设置了日志 https://github.com/celery/kombu/blob/main/kombu/mixins.py 但是默认的日志是不往「标准输出」输出的,这导致有错误也看不到 https://github.com/celery/kombu/blob/main/kombu/log.py 可以看到只有 logger.addHandler(logging.

  • 在我的Java应用程序中,我使用SLF4J+Logback进行日志记录。我在开发环境中使用调试级日志记录,在生产环境中使用错误级日志记录。但是有一些消息我无论如何都想要记录下来,无论日志级别如何(类似于,但使用的是logger)。 有什么切实可行的方法可以实现这一点吗?我可以使用error或更低的级别,但我想做的是给出一些信息,所以在语义上是错误的,它不是错误。 我可以在我的中为我的类定义另一个记

  • 我正在使用logback.xml实现SLF4J日志记录,但应用程序正在创建多个日志文件。我需要为一个日期创建一个单一的日志文件,所有的日志级别都在相同的日志文件中。 下面是我的logback.xml配置。

  • 控制台日志被来自第三部分库的日志弄得乱七八糟。例如,我的项目使用kafka和zooker keeper客户机库,因此有太多的日志来自它们 > 2018-05-08 10:30:38.250信息2968---[0:0:0:1:2181)]org.apache.zookeeper.clientcnxn:打开到服务器0:0:0:0:0:0:0:0:0:1/0:0:0:0:0:0:1:2181的套接字连接

  • 问题内容: 这是一个第三方应用程序,在我们的应用程序服务器上生成大量的登录信息。像这样: 如何关闭slf4j的输出?我已经在.war文件中查找了slf4j的一些配置,但没有找到任何配置。他们的网站也没有帮助 问题答案: slf4j只是实际日志后端(此处是覆盖jakarta commons日志记录)的一个漏斗,这是您必须配置的摆脱某种消息的程序。对于登录,这是适当的配置代码段: 对于log4j,它非

  • 因此,我正在部署一个使用Hibernate4.3.6的web应用程序。和Tomcat 7。我正在尝试使用SLF4J作为日志抽象层来日志。但是,我有很多问题和疑问。首先,Hibernate和Tomcat都有不同的日志框架,分别是jboss-logging和juli(即使我在库中找不到juli),所以我认为我必须安装从这些框架到SLF4J的桥梁。对于Hibernate,根据这个答案,一个解决方案可以是