Java Logback不';t在SpringApplication.run之后打印

Java Logback不';t在SpringApplication.run之后打印,java,spring,logback,Java,Spring,Logback,不知何故,在SpringApplication.run之后,Logback不是打印,而是System.out.println。我试图打印出在上下文中加载的bean。当然,我可以用System.out做到这一点。但我想用航海日志。有人能解释一下我在下面的代码中遗漏了什么吗 import java.util.Arrays; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.

不知何故,在SpringApplication.run之后,Logback不是打印,而是System.out.println。我试图打印出在上下文中加载的bean。当然,我可以用System.out做到这一点。但我想用航海日志。有人能解释一下我在下面的代码中遗漏了什么吗

import java.util.Arrays;    

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;    

@SpringBootApplication
public class MyApplication {    

  final static Logger logger = LoggerFactory.getLogger(MyApplication.class);    

  public static void main(String[] args) {    

    // This works fine. I am using logback behind the slf4j api. 
    logger.debug("Hello world from Spring Boot.");    

    ApplicationContext appContext = SpringApplication.run(
        MyApplication.class, args);   

    // The system.out works all right. The debug does not. Why?
    logger.debug("Let's inspect the beans provided by Spring Boot:");
    System.out.println("Let's inspect the beans provided by Spring Boot:");   

    String[] beanNames = appContext.getBeanDefinitionNames();
    Arrays.sort(beanNames);
    for (String beanName : beanNames) {
      System.out.println(beanName);
    }
  }
}
/pom.xml

<groupId>fun.and.games</groupId>
<artifactId>learnspringboot</artifactId>
<version>0.1.0</version>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
</parent>

<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

</dependencies>

<build>
    <plugins>

        <!-- mvn -e clean install exec:java -->
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <configuration>
                <mainClass>fun.and.games.MyApplication</mainClass>
            </configuration>
        </plugin>

        <!-- Configure the project to use java 8 version. -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <!-- Disable annotation processing for ourselves. -->
                <compilerArgument>-proc:none</compilerArgument>
            </configuration>
        </plugin>

        <!-- mvn -e clean install spring-boot:run -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>
logging.level.root=DEBUG

您不需要在pom.xml中为Logback添加依赖项,因为spring boot提供了SLF4J和Logback依赖项。Spring Boot在配置文件中为Logback提供了默认配置,并且默认情况下可以在应用程序中打印信息消息。如果要在日志中获取调试消息,则必须在application.properties文件中配置该消息。在属性文件中添加logging.level.your package=DEBUG。例如,您的包是“com.my.app”,然后使用

SpringWeb调试日志可以像这样启用

logging.level.org.springframework.web=DEBUG

请在

查看日志记录级别的详细信息,我很确定您的依赖项中没有包含SLF4J实现,但您使用的是SLF4J simple logger,它没有任何作用。添加一个SLF4J-log4j记录器或SLF4J logback,它应该可以工作。“来自Spring Boot的Hello world”打印得很好。因此,不应该出现缺少回显的情况。我想。你有时间试着运行代码吗?这个公开的要点包含了所有的代码。请出示你的pom或gradle。我也有同样的问题。你解决过这个问题吗,@kaunjovi?我创建了一个**/src/main/resources/application.properties**。在这里,我添加了一行logging.level.root=DEBUG。但是没有运气。顺便说一下,我不需要添加logback作为显式依赖项。谢谢。请尝试干净地构建您的项目。我测试了您的java类和pom.xml,正在打印调试日志。
logging.level.org.springframework.web=DEBUG