6
我在路徑中使用嵌入式Jetty 9和slf4j.jar。默認情況下,jetty會記錄大量信息。如何以可編程方式禁用碼9日誌記錄?
我想禁用日誌記錄,或者至少將日誌級別更改爲INFO。我該如何在程序中做到這一點(即,不用放置一些xml配置文件)?
我在路徑中使用嵌入式Jetty 9和slf4j.jar。默認情況下,jetty會記錄大量信息。如何以可編程方式禁用碼9日誌記錄?
我想禁用日誌記錄,或者至少將日誌級別更改爲INFO。我該如何在程序中做到這一點(即,不用放置一些xml配置文件)?
沒有辦法使用直接slf4j設置Logger級別,因爲slf4j只是一個日誌外觀/路由API。
您將需要依靠底層的日誌實現上設置的命名空間「org.eclipse.jetty」 如日誌記錄級別:
如果使用SLF4J-simple.jar,和SimpleLogger,那麼一旦初始化SimpleLogger(這在JVM的早期階段),就無法通過編程方式設置該級別,只能通過System屬性進行設置。
如果使用slf4j-log4j.jar,請使用Log4j specific techniques。
org.apache.log4j.LogManager.getLogger("org.eclipse.jetty").setLevel(Level.WARN);
java.util.logging.LoggerFactory.getLogger("org.eclipse.jetty").setLevel(Level.WARNING);
final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger("org.eclipse.jetty");
if (!(logger instanceof ch.qos.logback.classic.Logger)) {
return;
}
ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) logger;
logbackLogger.setLevel(ch.qos.logback.classic.Level.WARN);
爲什麼要避免XML /屬性文件?他們是操縱日誌級別的正確方法。這種編程方法很糟糕,因爲您需要重新編譯才能更改日誌級別!!!!! – SSR
除非您實現某種方式讓用戶通過GUI或TUI自行更改級別?除非你知道他們將如何使用它,否則你不能說某種程序員應該做的。 – Fallso