【问题标题】:Controller mapping are not logging at startup控制器映射在启动时未记录
【发布时间】:2019-04-19 01:12:51
【问题描述】:

我需要将在 jdk 8 上运行的现有代码升级到 jdk 11 升级后控制器映射在启动期间未显示。在此应用程序中,我们定义了一些用于集成的入站网关,我们有还定义了一些休息控制器,它们在 jdk 1.8 上时会记录日志,但在我升级后它们没有被记录。有什么方法可以打印这些日志。我们使用的是spring boot 2.1.0 Release,jdk 11 spring集成。第一个图像是在 jdk 8 上运行的代码,第二个图像是在 jdk 11 上运行的代码。这是我们正在使用的 pomfile http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>com.oms.integration</groupId>
<artifactId>oms-integration</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>oms-integration</name>
<description>Integration between OMS and other systems</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.0.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>11</java.version>
</properties>

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

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

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

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

    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-http</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.integration</groupId>
        <artifactId>spring-integration-xml</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>xmlunit</groupId>
        <artifactId>xmlunit</artifactId>
        <version>1.5</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <release>${java.version}</release>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>org.ow2.asm</groupId>
                    <artifactId>asm</artifactId>
                    <version>6.2</version>
                </dependency>
            </dependencies>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

【问题讨论】:

  • API 可以访问吗?
  • 请问它在 JDK 1.8 上看起来如何?您的插入记录为格式化代码也会很棒。谢谢
  • API 是可访问的,唯一的问题是它们在启动时没有记录。这是在 jdk1.8 中运行的先前版本启动日志的屏幕截图。我在 8090 端口运行之前版本的代码。
  • 你是只升级JDK还是Spring Boot版本?如果没有失败,您展示的内容就没有多大意义
  • 是的,我们确实将 spring boot 2.0.4.RELEASE 升级到了 2.1.0.RELEASE

标签: java spring spring-mvc spring-boot spring-integration


【解决方案1】:

如果您还升级了 Spring Boot,这意味着您的项目中的所有其他依赖项也是如此,那么您无法将苹果与苹果进行比较,因为它已经不仅仅是 Java 切换。

从 5.1 版开始,Spring Framework 似乎不会在 INFO 下记录这些端点。考虑为 org.springframework.web 类别配置 DEBUG,然后您将再次使用它们。

您的问题是您没有与我们分享有关依赖项版本不匹配的重要信息...

更新

抱歉,必须是TRACE。这是来自AbstractHandlerMethodMapping 的一段相关代码:

if (logger.isTraceEnabled()) {
            logger.trace("Mapped " + methods.size() + " handler method(s) for " + userType + ": " + methods);
        }

【讨论】:

  • 我已经用我们正在使用的最新 pomfile 更新了我的帖子,我是否需要在我的属性文件 org.springframework.web=DEBUG 中指定这个属性。当我指定我得到未知属性时
  • @Sid logging.level.= 其中 level 是 TRACE、DEBUG、INFO、WARN、ERROR、FATAL 或 OFF 之一。可以使用 logging.level.root 配置根记录器。 docs.spring.io/spring-boot/docs/current/reference/html/…
  • 我已经添加了这个配置但是我仍然没有看到任何映射日志 spring.profiles.active=dev server.port=8080 logging.level.org.springframework.web=DEBUG
  • 在我的回答中查看更新。现在一定是TRACE
  • @ArtemBilan 这让我发疯了。谢谢你。 FWIW:什么对我有用:logging.level.org.springframework.web.servlet.mvc.method.annotation=TRACE
猜你喜欢
  • 2019-09-24
  • 2020-10-08
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 1970-01-01
  • 2015-12-03
  • 2015-12-30
相关资源
最近更新 更多