Cosa sono i marker nei framework di registrazione Java e qual è il motivo per utilizzarli?


110

La prima volta che sento parlare di marcatori durante la lettura:

http://slf4j.org/faq.html

Controllo i metodi disponibili per l' oggetto Logger :

e ha trovato interfacce:

Informazioni più approfondite che ricevo da:

ma ancora confuso ... Nota che chiedo perché , non come usarli, quindi questo non è un duplicato di:

UPDATE Sembra che quando si utilizzano i marker sia necessario anche scrivere codice Java personalizzato invece di eseguire la configurazione in file XML o .property ...

AGGIORNAMENTO 2 Da http://logback.qos.ch/manual/appenders.html#OnMarkerEvaluator

Marker notifyAdmin = MarkerFactory.getMarker("NOTIFY_ADMIN");
logger.error(notifyAdmin,
  "This is a serious an error requiring the admin's attention",
   new Exception("Just testing"));

Per utilizzare i marker è necessario utilizzare l'API dei marker fornita da SLF4J. È questo che intendi per "codice Java personalizzato"?
Ceki

@Ceki Sembra che usare solo Logger.warn (Marker, msg) non ti abbia dato alcun vantaggio fino a quando non hai scritto una classe personalizzata per i filtri e li hai registrati ... La sintassi semplice di logback.xml non ha abilità speciali per lavorare con Marker (solo stamparli da % marcatore )
gavenkoa

1
Cosa trova "speciale" in ciò che viene presentato su logback.qos.ch/manual/appenders.html#OnMarkerEvaluator ?
Ceki

@Ceki Grazie per il punto! È solo un punto in cui è possibile utilizzare i marker?
gavenkoa

1
@Ceki Ora che stiamo usando Elasticsearch è il modo per contrassegnare eventi speciali. Manteniamo i marcatori predefiniti in una classe dedicata per il riutilizzo. Non era ovvio quando usi solo i grepregistri di testo.
gavenkoa,

Risposte:


117

Questa è una versione modificata della mia risposta alla domanda " Best practice per l'utilizzo dei marker in SLF4J / Logback ".

I marcatori possono essere utilizzati per colorare o contrassegnare una singola istruzione di registro. Quello che fai con questi colori, cioè i pennarelli, dipende interamente da te. Tuttavia, due modelli sembrano essere comuni per l'utilizzo dei marker.

  1. Trigger : alcuni appender potrebbero essere istruiti a eseguire un'azione in presenza di un determinato marker. Ad esempio, SMTPAppenderpuò essere configurato per inviare un'e-mail ogni volta che un evento di registrazione è contrassegnato con il NOTIFY_ADMINmarcatore indipendentemente dal livello di registro. Vedere l' attivazione basata su marker nella documentazione del logback. È inoltre possibile combinare livelli di registro e indicatori per l'attivazione.

  2. Filtraggio : i marcatori sono molto utili per far risaltare alcune preziose istruzioni di registro. Ad esempio, puoi colorare / contrassegnare tutti i log relativi alla persistenza (in vari e più file di classe) con il colore "DB". È quindi possibile filtrare per "DB": disabilitare la registrazione ad eccezione delle istruzioni di registro contrassegnate con DB. Vedere il capitolo sui filtri nella documentazione di logback per ulteriori informazioni (cercare MarkerFilter). Si noti che il filtraggio sui marker può essere eseguito non solo dal logback ma anche dagli strumenti di analisi del log.

Prima dell'avvento dei Marker, per ottenere un comportamento simile, avevi l'opzione 1) utilizzando livelli personalizzati 2) utilizzare nomi di logger modificati. L'API SLF4J attualmente non supporta i livelli personalizzati. Come per l'opzione 2, è possibile aggiungere suffissi (o prefissi) ai nomi dei logger se è necessario modificare uno o due logger. L'approccio diventa impraticabile non appena 3 o più logger devono essere "sottoclassati" perché i file di configurazione associati diventano ingestibili.

Anche se un singolo marker può essere già molto utile, la prossima versione di SLF4J, ovvero la versione 2.0, consentirà più marker per istruzione di log.


1
Inoltre può essere utilizzato in SiftingAppender per discrimnator stackoverflow.com/a/30552012/1012497
Nikli
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.