2017-07-21 21 views
2

我的配置是標準的Dropwizard聯繫:更改日誌級別的所有

logging: 

    # The default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL. 
    level: INFO 

    # Logger-specific levels. 
    loggers: 

    # Sets the level for 'com.example.app' to DEBUG. 
    com.example.app: DEBUG 

    # Redirects SQL logs to a separate file 
    org.hibernate.SQL: 
     level: DEBUG 

我要爲所有記錄器的默認日誌級別更改爲DEBUG。我試過以下,並沒有什麼作品(說的管理端口是1234):

curl -X POST -d "logger=all&level=DEBUG" localhost:1234/tasks/log-level 
curl -X POST -d "level=DEBUG" localhost:1234/tasks/log-level 
curl -X POST -d "logger=*&level=DEBUG" localhost:1234/tasks/log-level 

當我與-vv運行這些,例如用於logger=all,我看到Configured logging level for all to DEBUG,但是拖尾的日誌不發生變化,仍然是INFO。當然,如果我更改配置並將最高級別設置爲DEBUG,然後重新啓動,我會得到DEBUG級別。

什麼是命令?

回答

2

我已經checked the source codelog-level任務,其主要邏輯是實現這樣的:

for (String loggerName : loggerNames) { 
    ((LoggerContext) loggerContext).getLogger(loggerName).setLevel(loggerLevel); 
    output.println(String.format("Configured logging level for %s to %s", loggerName, loggerLevel)); 
    output.flush(); 
} 

因此它是基於名稱爲記錄器實現的方式,知道這一點,我走進了源org.slf4j.Logger界面,發現這個領域:

String ROOT_LOGGER_NAME = "ROOT"; 

做一個POST這樣解決了這個問題對我來說:

curl -X POST -d "logger=ROOT&level=DEBUG" localhost:8081/tasks/log-level 
相關問題