标签: slf4j-api

类路径包含多个SLF4J绑定错误

tring运行gradle build时出现此错误

我理解它的版本冲突,但不知道如何解决它和哪些

要排除的版本...

gradle依赖树是:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/i/.gradle/caches/modules-
2/files-2.1/org.slf4j/slf4j- 
log4j12/1.6.1/bd245d6746cdd4e6203e976e21d597a46f115802/slf4j-log4j12-
1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in   
[jar:file:/C:/Users/i/.gradle/caches/modules-2/files-
2.1/ch.qos.logback/logback- 
classic/1.1.3/d90276fff414f06cb375f2057f6778cd63c6082f/logback-classic-
1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an    
explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
SLF4J: Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class    
path, preempting StackOverflowError. 


 compile - Compile classpath for source set 'main'.
 +--- com.google.code.gson:gson:2.2.4
 +--- com.fasterxml.jackson.core:jackson-core:2.6.0
 +--- com.fasterxml.jackson.core:jackson-databind:2.6.0
 |    +--- com.fasterxml.jackson.core:jackson-annotations:2.6.0
 |    \--- com.fasterxml.jackson.core:jackson-core:2.6.0
 +--- com.fasterxml.jackson.core:jackson-annotations:2.6.0
 +--- com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.6.0
 |    +--- com.fasterxml.jackson.core:jackson-core:2.6.0 …
Run Code Online (Sandbox Code Playgroud)

log4j logback slf4j gradle slf4j-api

12
推荐指数
3
解决办法
1万
查看次数

方便的Kotlin LoggerFactory简化

使用kotlin使用SLF4J或其他日志记录方法最方便的方法是什么?

通常开发人员忙于样板代码

private val logger: Logger = LoggerFactory.getLogger(this::class.java)
Run Code Online (Sandbox Code Playgroud)

在每个班级中获得适当的记录器?

用Kotlin统一/简化这个的最方便的方法是什么?

logging android slf4j kotlin slf4j-api

7
推荐指数
1
解决办法
309
查看次数

slf4j-log4j12与log4j之间的区别

在一个项目中,pom.xml我看到了如下的依赖

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.5</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.5</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

有人能让我知道slf4j-log4j12& 之间的区别是log4j什么?

java log4j slf4j slf4j-api

6
推荐指数
1
解决办法
2478
查看次数

Slf4j 自定义提供程序实现未被采纳

Slf4j 提供了一些库来“欺骗”后端特定代码库,使其认为特定后端存在,同时将所有日志记录重定向到一个 slf4j api 兼容后端。

简而言之,log4j-over-sl4j 会将 log4j 特定日志记录中的任何内容重定向到 slf4j。

所以我的类路径现在有

slf4j-api *-over-slf4j slf4j-simple (to be removed)

我正在尝试为 slf4j 1.8+ 提供自定义日志记录后端(请不要问为什么)。为了开始使用这个,我将 slf4j-simple 复制到我的项目中。

当 slf4j-simple 添加为依赖项日志记录时,会按预期发生,但是当我删除依赖项并简单地将完全相同的内容保留在我自己的代码库中时,它不会拾取它(尽管是不同的包)...

我怎样才能让 sl4j 看到我的自定义提供程序?

在此输入图像描述

更新

我可以看到该 jar 有一些额外的信息,可能是 slf4j 用来选择提供商的信息......

然而,就我而言,我的日志记录后端位于我自己的代码库中(我不想将其分离到库中),那么是否有一个 api 可以将您的提供程序设置为 SLF4J?

在此输入图像描述

java logging slf4j slf4j-api

3
推荐指数
1
解决办法
2770
查看次数

版本健全性检查(Spring/SLF4J)

我正在尝试在 Tomcat 上部署 Spring Boot 应用程序。但不知何故我得到:

Unexpected problem occured during version sanity check
Reported exception:
java.lang.AbstractMethodError: org.apache.logging.slf4j.SLF4JServiceProvider.getRequestedApiVersion()Ljava/lang/String;
        at org.slf4j.LoggerFactory.versionSanityCheck(LoggerFactory.java:297)
        at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:141)
        at org.slf4j.LoggerFactory.getProvider(LoggerFactory.java:421)
        at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:407)
        at io.micrometer.core.util.internal.logging.Slf4JLoggerFactory.<init>(Slf4JLoggerFactory.java:49)
        at io.micrometer.core.util.internal.logging.Slf4JLoggerFactory.<clinit>(Slf4JLoggerFactory.java:46)
        at io.micrometer.core.util.internal.logging.InternalLoggerFactory.newDefaultFactory(InternalLoggerFactory.java:60)
        at io.micrometer.core.util.internal.logging.InternalLoggerFactory.getDefaultFactory(InternalLoggerFactory.java:76)
        at io.micrometer.core.util.internal.logging.InternalLoggerFactory.getInstance(InternalLoggerFactory.java:108)
        at io.micrometer.core.util.internal.logging.InternalLoggerFactory.getInstance(InternalLoggerFactory.java:98)
        at io.micrometer.core.instrument.binder.jvm.JvmGcMetrics.<clinit>(JvmGcMetrics.java:61)
        at org.springframework.boot.actuate.autoconfigure.metrics.JvmMetricsAutoConfiguration.jvmGcMetrics(JvmMetricsAutoConfiguration.java:48)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:486)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
Run Code Online (Sandbox Code Playgroud)

我在公共类加载器中有一些 SLF4J/Log4J2 jar,它们用于其他一些 Web 应用程序。

喜欢:

log4j-api-2.14.1.jar
log4j-core-2.14.1.jar
log4j-over-slf4j-2.0.0-alpha5.jar
log4j-slf4j18-impl-2.14.1.jar
slf4j-api-2.0.0-alpha5.jar
Run Code Online (Sandbox Code Playgroud)

我认为这是slf4j …

spring log4j2 spring-boot slf4j-api

3
推荐指数
1
解决办法
8574
查看次数

如何在slf4j中格式化异常?

从我在网上找到的许多示例,文档以及此处的Stack Overflow中,在slf4j中连接字符串的正确方法是使用内置的字符串格式。

例如 :

    LOGGER.error("ExceptionHandler throws {}" , appException);
Run Code Online (Sandbox Code Playgroud)

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

    LOGGER.error("ExceptionHandler throws " , appException);
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这对我不起作用,我也不知道自己缺少什么。如果传递对象,是否使用其他格式?

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

2018-07-18 02:38:19 ERROR c.a.c.c.p.ExceptionProcessor:67 - ExceptionHandler throws  {}
Run Code Online (Sandbox Code Playgroud)

而不是使用常规串联时收到的预期消息:

LOGGER.error("ExceptionHandler throws " + appException);
Run Code Online (Sandbox Code Playgroud)

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

   LOGGER.error("ExceptionHandler throws {}" , appException.toString());
Run Code Online (Sandbox Code Playgroud)

根据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类如下:

import java.io.Serializable;

import javax.ws.rs.core.Response.Status;


public class AppException extends Exception implements Serializable {

    private static final long serialVersionUID = 1L;

    private Error error;
    private Status status;

    public AppException(Error error, Status status) {
        this.error = error;
        this.status …
Run Code Online (Sandbox Code Playgroud)

java logging slf4j slf4j-api

2
推荐指数
1
解决办法
1296
查看次数

将 commons-logging 连接到 slf4j-api

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

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

"org.apache.logging.log4j:log4j-api:2.12.1"
"org.apache.logging.log4j:log4j-core:2.12.1"
"org.apache.logging.log4j:log4j-1.2-api:2.12.1"
"org.slf4j:slf4j-api:${slf4j_version}"
"org.apache.logging.log4j:log4j-slf4j-impl:2.12.1"
"org.slf4j:slf4j-jcl:1.7.25"
Run Code Online (Sandbox Code Playgroud)

但无法启动我的服务:( Getting java.lang.ExceptionInInitializerError... 引起:org.springframework.beans.factory.CannotLoadBeanClassException

slf4j apache-commons-logging log4j2 slf4j-api

2
推荐指数
1
解决办法
1247
查看次数

Spring boot + slf4j + log4j + 类 org.apache.logging.slf4j.SLF4JLoggerContext 无法转换为类

我有Spring boot 2.3.1

  • pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>logger</groupId>
    <artifactId>logger</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>logger</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>11</java.version>
        <lombok.version>1.18.12</lombok.version>
        <log4j.version>1.2.17</log4j.version>
        <slf4j.version>1.7.30</slf4j.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
            </exclusions>
        </dependency>


        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>${lombok.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin> …
Run Code Online (Sandbox Code Playgroud)

log4j spring-boot slf4j-api java-11

2
推荐指数
1
解决办法
8615
查看次数