Anmeldung mit SL4J, Jakarta Commons Logging, log4j für Drittanbieter-Bibliotheken und meinen eigenen Code

StackOverflow https://stackoverflow.com/questions/462566

Frage

Ich habe einige Fragen über die Protokollierung, genauer gesagt über es einrichten und sicherstellen, dass es funktioniert.

Das Projekt Ich verwende mache Wicket , Frühling und Hibernate . Ich weiß, dass Wicket und Hibernate verwendet einfache Protokollierung Fassade für Java ( SL4J ) und dass der Frühling mit der Logging-Komponente von Apache Commons .

Werden sie koexistieren glücklich? Ich dachte, ich würde verwenden log4j zusammen mit den beiden SL4J und der Logging-Komponente von Apache commons , denken Sie, das ist eine gute Idee?

Kann ich auf sie alle zur Ausgabe von Logging-Daten in eine gemeinsame Datei? Oder sollte ich separate Dateien? Oder sollte ich speichern Sie die Log-Meldungen in der Datenbank? (Ich würde lieber nicht, wie ich etc finden greppen auf Textdateien sehr bequem.)

Für das Frühjahr Ich glaube, ich brauche eine Art von Konfigurationsdatei für die Apache Commons Komponente Protokollierung als auch, wo es es direkt log4j zu benutzen?

Wenn ich diese eingerichtet haben Ich glaube, dass alles zu sehen, arbeitet ich die Protokollierungsstufe auf INFO gesetzt, wie es ziemlich sicher ist, dass alle drei der Gerüste Ausgabe einige Informationen in diesem Modus? Oder gibt es einen noch besseren Weg, um sicher zu machen?

Und meine letzte Frage. Im Projekt beginne ich, empfehlen Sie, dass ich SL4J für meine eigenen Logging-Zwecke zu nutzen? (Ich dachte, ich würde log4j verwenden, um direkt, aber das war, bevor ich ein wenig mehr über die Protokollierung und viele respektable Bibliotheken gelernt scheinen den Weg einer Brücke / Fassade für ihre Protokollierung Bedürfnisse zu wählen. Und wenn es uns Flexibilität wird ohne Zusatz Kosten gibt es keinen Grund, es nicht so zu machen.)

Ich freue mich mehr von Ihnen zu hören, wie Sie Ihre Protokollierung tun. Es ist ein neuer Bereich für mich, die ich bin gespannt, mich in zu verbessern.

War es hilfreich?

Lösung

Nun SLF4J ist nur eine Fassade, wie commons Protokollierung, das heißt, sie müssen noch etwas anderes zu arbeiten. Sie ermöglichen eine Bibliothek Autoren Benutzer nicht zu zwingen, in mehr Logging-Bibliothek und Konfiguration. Log4j und logback sind regelmäßige Protokollierung Libs.

Siehe hier für weitere Informationen.

SLF4J hat eine commons Anmeldung Brücke , dass Sie die commons Protokollierung Bibliothek ersetzen verwenden können. Ich denke, dass das Schema es sehr gut, die Situation erklären.

Nun müssen Sie nur slf4j-logj12.jar verwenden commons Protokollierung und slf4j Verwendung log4j zu haben (oder was immer Sie wählen, btw, logback keine zusätzliche Bibliothek muss mit slf4j verwendet werden) als Trägermotor .

Sie Anwendung wird also haben

  • jcl104-over-slf4j.jar (zu überbrücken Anmeldung Jakarta Commons zu slf4j)
  • slf4j.jar (für Hibernate und andere verwenden slf4j)
  • slf4j-logj12.jar (für slf4j log4j als Backend zu verwenden)
  • log4j.jar (für Ihre Anwendung zu verwenden. Alle Config wird auch hier geschehen)

Andere Tipps

Hier ist, wie alles zu SLF4J umleiten:

  • entfernen commons-logging.jar von Classpath. Wenn Sie Maven verwenden und Schwierigkeiten haben, von commons-logging befreien, finden Sie unter diese .

  • setzen jcl-over-slf4j.jar in Ihrem Classpath (es kommt in der SLF4J Verteilung). Dies ist ein Drop-in-Ersatz, ahmt JCL Klassen, sondern ruft SLF4J intern. Diese kümmert sich um Frühling, und andere Rahmenbedingungen, die JCL verwendet.

Connect SLF4J zu Ihrem Lieblings-Backend (Log4J, Logback ...) von slf4j-xxx.jar im Classpath setzen. Konfigurieren Sie das Backend einzuloggen alle Kategorien in einer Datei, und du bist fertig.

Wie für die Verwendung von SLF4J in Ihrer Anwendung ist es nicht unbedingt erforderlich ist. Bibliotheken wie JCL und SLF4J wurden ursprünglich für Leute, die Bibliotheken schreiben und nicht will, dass ihre Kunden in ein bestimmtes Logging-Framework zu sperren.

PS: durch die Art und Weise, JCL = Jakarta Commons Logging

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top