2017-07-21 4 views
2

Meine Config ist die Standard-Dropwizard Admin: Ändern loglevel für alle

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 

ich die Standard-Protokollebene für alle Logger DEBUG ändern möchten. Ich habe das versucht, folgende und nichts funktioniert (sagen Admin-Port 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 

Wenn ich diese mit -vv laufen, zum Beispiel für logger=all, ich sehe Configured logging level for all to DEBUG, aber das Tailing das Protokoll nicht ändert, und ist immer noch INFO. Natürlich, wenn ich die Konfiguration ändern und die oberste Ebene auf DEBUG setzen und neu starten, bekomme ich DEBUG-Ebene.

Was ist der Befehl?

Antwort

2

Ich habe checked the source code für die log-level Aufgabe und seine Haupt Logik wird wie folgt umgesetzt:

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(); 
} 

So wie es implementiert ist für den Logger auf den Namen basiert, wohl wissend, das ich in die Quelle ging für org.slf4j.Logger Schnittstelle und fand dieses Feld:

String ROOT_LOGGER_NAME = "ROOT"; 

Doing ein POST wie diese gelöst es für mich:

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