我有一個 Groovy 腳本,它使用Grape @Grab注釋指定依賴項。其中包括對spring-webto useRestTemplate的依賴,以及slf4j-nop對避免Failed to load class "org.slf4j.impl.StaticLoggerBinder"警告的依賴。
#!/usr/bin/env groovy
@Grab('org.springframework:spring-web:5.3.18')
@Grab('org.slf4j:slf4j-nop:1.7.36')
import org.springframework.web.client.RestTemplate
new RestTemplate().getForObject('http://www.example.com', String)
然而,盡管如此,我仍然收到 SLF4J 警告:
$ ./restTemplateLoggingTest.groovy
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.
鑒于它是一個腳本,輸出不包含無關噪聲很重要,因為它可以通過編程方式使用和操作。
當我運行我的腳本時,我能做些什么來防止這個日志記錄警告被輸出?
uj5u.com熱心網友回復:
實驗表明,將依賴項附加到系統類加載器 using@GrabConfig(systemClassLoader=true)會導致不再發出日志:
#!/usr/bin/env groovy
@GrabConfig(systemClassLoader=true)
@Grab('org.springframework:spring-web:5.3.18')
@Grab('org.slf4j:slf4j-nop:1.7.36')
import org.springframework.web.client.RestTemplate
new RestTemplate().getForObject('http://www.example.com', String)
我不確定這是為什么,盡管我有一些模糊的猜測。
請注意,盡管解決了這個問題,但這并不是Javadocs所描述的用途GrabConfig#systemClassLoader:
如果您想在加載葡萄時使用系統類加載器,請設定為 true。這通常僅在核心 Java 類需要參考抓取的類時才需要,例如,對于使用 DriverManager 訪問的資料庫驅動程式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/461386.html
下一篇:在SpringAuthorizationServer(0.2.3 )中支持并發全堆疊MVC(session)認證以及無狀態JWT認證
