我使用 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/