java - Gradle 使用 STDOUT 来记录 Jetty 关闭

标签 java jetty gradle slf4j logback

我使用 Jetty 作为 Web 服务器并以编程方式启动它。该项目正在使用 Gradle。对于日志记录,我使用 sl4j 和 logback 实现。 为了停止服务器,我使用了 org.eclipse.jetty.util.component.LifeCycle。 在生产环境中一切都很完美。

但是,我的问题是,当我从 gradle 运行单元测试时,Jetty 关闭服务从另一个线程将 INFO 级别消息记录到 STDOUT。这种情况不应该发生,因为从 [main] 线程打印的所有其他 INFO 消息都不会显示。

理论上,只有当 gradle 以 "--info" 启动时,该 INFO 日志才应该存在。

有人知道为什么 Gradle 将 Jetty INFO 日志映射到 STDOUT 吗?

附注单元测试中没有logback的配置文件。

这是运行时显示的第一条日志消息

gradle integrationTest

<code>11:30:25.553 [Thread-8] INFO org.eclipse.jetty.server.Server - Graceful shutdown SelectChannelConnector@0.0.0.0:8984</code>

最佳答案

默认情况下,测试中打印到 stdout 的所有内容都会在 gradle 中打印出来。这让我相信,出于某种原因,来自其他线程的 INFO 日志消息正在打印到标准输出。您能验证一下情况是否如此吗?

如果您不关心情况是否如此,并且您只是不想从测试标准输出中看到任何内容,那么有一种方法可以禁用 Gradle 中测试的所有输出:

integrationTest {
    testLogging.showStandardStreams = false
}

关于java - Gradle 使用 STDOUT 来记录 Jetty 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16437516/

相关文章:

maven - 无法启动 Jetty 服务器 - 扫描条目 META-INF/versions/9/时出错

java - Grails 3.x 失败 bootRun

java - 使用 Hibernate 和 Spring 的一对多映射

java - 是否有用于 Java 对象/类的标准 XML 模式?

java - 将 Java 类作为参数传递给 JRuby 方法

android - Firebase无法正常运行Android Studio 3.0.1 [com.android.support:support-core-utils:27.1.0]

spring-boot - 预期类型 'Upload' 为 GraphQLInputType 是仅允许错误用作输入类型的对象类型的类型,反之亦然

java - 如何处理从 Java 到 Kotlin 的通用列表转换?

java - 如何在 Jetty 中启用 SSL 调试?

java - Jetty 日志记录配置错误