没有生成SLFJ日志

问题描述 投票:0回答:1

我是slf4j的新手,在我的项目中,我使用它来获取日志。

我使用的是InteliJ IDE。

下面是我的代码


package com.sample;


import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class TestMainclass 

{

    static Logger logger = LoggerFactory.getLogger(TestMainclass.class);

    public static void main(String[] args) {

        System.out.println("before");

        logger.debug("hello");

        logger.info("hello");

        System.out.println("after");

        }

}

这里是依赖性

    testCompile group: 'org.slf4j', name: 'slf4j-jdk14', version: '1.7.30'

在正常的设置下,一切都很好,但是当我建立我的代码,并运行jar与junit-platform-console-standalone-1.5.2.jar时,出现以下错误。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
logging logback slf4j
1个回答
0
投票

SLF4J是一个日志API。它需要一个实现。有几种选择:Log4j 2,Logback,log4j 1.x(不推荐),或者java util logging(不推荐)。我个人倾向于使用log4j 2,这样的话,你需要3个jar--log4j-slf4j-impl、log4j-api和log4j-core。 这些都会使用org.apache.logging.log4j这一组,最新版本是2.13.2。


0
投票

SLF4J项目的想法是为Java世界中存在的许多日志框架创建一个通用的API。

因此,这只是给你提供了一个带有方法调用的接口,这样你的代码就可以编译和运行,但不是一个日志框架,slf4j可以将工作委托给它。 这通常是通过在运行时将slf4j和所选的日志框架jar放在classspath上,(如果需要的话)用桥接来实现的。 这在 slf4j 文档中有详细描述。

你选择了slf4j-jdk14,它使用了Java运行时内置的日志框架,但很明显,当junit运行时,它不在classpath上,导致了错误。

我建议你在看到错误的时候看看classpath,看看那里有哪些slf4j jars。

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