2009-06-16 7 views
5

Ich habe einige JAR-Dateien, die an Clients verteilt werden, die log4j für die Protokollierung verwenden. Meine Frage ist, sollte ich eine log4j.xml-Konfiguration in die JAR-Datei einbinden oder den Client einen solchen bereitstellen lassen, wenn sie protokollieren wollen?log4j.xml in Client-Dateien

Mein Gefühl ist, die log4j.xml Konfigurationsdatei aus der Client-Jars zu verlassen, da die Apache JAR-Dateien alle mit log4j Protokollierung kommen, aber sans log4j.xml.

Antwort

9

Ja, lassen Sie es aus. Es ist eine völlige Belästigung, wenn Ihre log4j-Konfigurationsdatei ignoriert wird, da eine der 60 Drittanbieter-Bibliotheken Ihrer App eine eigene enthält.

0

Wenn Sie log4j in Ihrer Anwendung verwenden, fügen Sie es in Ihr Projekt ein. Wenn du es nicht bist, warum würdest du es dort hinein tun? Was ist, wenn Client A log4j Version 1.2 und Client B log4j Version 1.3 möchte?

Lassen Sie sie entscheiden, was sie für ihre Projekte benötigen und sich darum kümmern, was Sie für Ihre benötigen.

+0

Sie beziehen sich wahrscheinlich auf die tatsächliche log4j.jar-Abhängigkeit, aber ich spreche von der Konfigurationsdatei log4j.xml. –

+0

Ahh ja, entschuldige, dass ich das verpasst habe. Ich habe hier ein Projekt, das eine Abhängigkeit für diese ABIS-JAR-Datei hat. Diese ABIS-JAR-Datei hat ihre eigene log4j.xml-Konfigurationsdatei. Meine log4j-Parameter werden manchmal von denen aus dem importierten ABIS-Jar überschrieben (der Logging-Level ist auf ERROR gesetzt, anstatt auf den DEBUG, auf den ich gesetzt habe). Ich würde es definitiv weglassen und den Kunden ihre setzen lassen. – amischiefr

5

Das Gute an log4j in Ihrem Fall ist, dass Ihr Glas wirklich keine Sorgen machen muss. Die grundlegendsten Benutzung von log4j ist:

  1. für die aktuelle Klasse einen Logger-Objekt erhalten
  2. Rufen Sie eine der Methoden, die auf diesem Logger, wie debug("some message");

Wenn die Gläser Sie versenden sind Um von einer größeren Anwendung verwendet zu werden, wird Ihr Code idealerweise nur die zwei oben aufgeführten Schritte ausführen. Auf diese Weise erhält Ihr Code einfach Logger-Objekte von der bereits konfigurierten log4j-Instanz in der Client-Anwendung. Ihr Produktionscode ist dann entkoppelt davon, dass Sie wissen müssen, wie Sie log4j konfigurieren.

Jede Protokollierung, die Sie für Ihre Entwicklung der JARs sehen müssen, kann durch Konfigurieren einer log4j-Instanz in Komponententest-upUp() -Methoden oder ähnlichem erfolgen, die nicht mit dem Produktionscode zum Client gebündelt werden.

0

Ich würde die Konfiguration XML hinzufügen und es mit Anweisungen für den Benutzer laden, die verschiedene Konfigurationen und Optionen zeigen. Dadurch wird es für sie oder den Support einfacher, die Protokollierung von Zusätzen zu aktivieren.

+0

Dies zwingt den Client, den Inhalt meiner JAR-Datei zu bearbeiten. Nicht sicher, dass ich das eine Best Practice nenne. –

2

Ich würde eine Standard-log4j-Konfiguration setzen, von der Sie erwarten, dass sie für Ihre Kunden in der Dokumentation nützlich sein wird. Auf diese Weise können interessierte Personen sehen, welche Protokollierungsoptionen Sie haben (normalerweise haben bestimmte Klassen interessantere Protokollnachrichten aus der Sicht des Benutzers). Ich finde es nervig, wenn ich eine Log-Datei von Drittanbietern verwende, die log4j verwendet und keine Dokumentation enthält. Außerdem gibt es Log-Nachrichten, die meinen Bildschirm füllen, und ich muss herausfinden, wie bestimmte Log-Nachrichten aktiviert oder unterdrückt werden.