2016-06-15 15 views
0

Wir haben eine Anwendung. In dem wir eine Bedingung haben. Wenn die Bedingung erfüllt ist, schreiben wir einige Protokollnachrichten in eine Datei, sonst protokollieren wir die Nachrichten in einer anderen Datei.Anmelden in verschiedenen Dateien basierend auf einer Bedingung

Und Protokollierung sollte basierend auf der Bedingung geschehen und nicht auf Log-Level basieren.

Wie ist es in Dropwizard mit Yaml-Datei möglich?

Antwort

2

Dies wird von Anfang an unterstützt. Hier ist mein Beispiel:

server: 
    rootPath: /api/* 
    requestLog: 
    appenders: [] 
    applicationConnectors: 
    - type: http 
    port: 9085 
logging: 
    level: INFO 
    loggers: 
    "my-log-1": 
     level: DEBUG 
     additive: false 
     appenders: 
     - type: file 
      currentLogFilename: /home/artur/var/log/test1.log 
      archivedLogFilenamePattern: /home/artur/var/log/test1.log%d.log.gz 
      archivedFileCount: 5 
      logFormat: '[%level] %msg%n' 
    "my-log-2": 
     level: DEBUG 
     additive: false 
     appenders: 
     - type: file 
      currentLogFilename: /home/artur/var/log/test2.log 
      archivedLogFilenamePattern: /home/artur/var/log/test2.log%d.log.gz 
      archivedFileCount: 5 

HINWEIS: Sie können Registerkarten in der Konfiguration nicht verwenden.

Diese Konfiguration erstellt 2 Logger. Die erste heißt "my-log-1", die zweite heißt "my-log-2".

Sie können nun diese Logger in Ihrer Java-Klasse, zum Beispiel in meiner Anwendung erstellen:

public class Application extends io.dropwizard.Application<Configuration>{ 


    private static final Logger log = Logger.getLogger("my-log-1"); 
    private static final Logger log2 = Logger.getLogger("my-log-2"); 


    @Override 
    public void run(Configuration configuration, Environment environment) throws Exception { 

     log.info("Test1"); // writes to first file 
     log2.info("Test2"); // logs to seconds file 



    } 

    public static void main(String[] args) throws Exception { 
     new Application().run("server", "/home/artur/dev/repo/sandbox/src/main/resources/config/test.yaml"); 
    } 
} 

Hinweis die beiden Holzfäller und ihre Schöpfung am Anfang der Datei.

Sie können sie jetzt wie jeden Logger verwenden. Fügen Sie Ihren Zustand und melden Sie sich weg:

 int random = new Random().nextInt(); 

     if(random % 2 == 0) { 
      log.info("Test1"); // writes to first file 
     } else { 
      log2.info("Test2"); // logs to seconds file 
     } 

Ich hoffe, dass Ihre Frage beantwortet,

Dank,

Artur

+0

Dank! Das funktioniert auch gut für mich. Könnten Sie bitte eine weitere Zeile zum YAML hinzufügen, um das Protokollmuster auf "% m% n" zu setzen? – pMan