Beziehung zwischen log4j und apache.commons.logging

8

Könnte mir bitte jemand sagen Was ist die Beziehung zwischen log4j und apache.commons.logging? welcher ist beliebter und besser?

Ich habe eine vorhandene Anwendung importiert, in die sie import org.apache.commons.logging.LogFactory; importiert und eine separate Klasse namens Log geschrieben und einige der Methoden als critical , warn , info

überschrieben

Zum Beispiel

%Vor%

Könnte mir jemand bitte sagen, dass log4j und apache.commons.logging anders sind?

    
Pawan 13.12.2011, 11:52
quelle

3 Antworten

12

Apache Commons Logging ist eine Abstraktion für die konkrete Implementierung. Es verwendet log4j, falls vorhanden und konfiguriert. Ich würde Commons verwenden, die meinen Code und log4j als Protokollierungsimplementierung anmelden.

    
Ulrich von Poblotzki 13.12.2011, 11:57
quelle
2

log4j ist ein Protokollierungs-Framework, d. h. es stellt den Code zum Protokollieren von Nachrichten bereit. Commons-Logging ist eine Abstraktionsschicht zum Loggen von Frameworks, es protokolliert selbst nichts. Wenn ich zum Beispiel Code schreibe, der Common Logging verwendet, und ihn auf JBoss deployen, erfolgt die Protokollierung durch log4j. Wenn ich ihn jedoch auf WebSphere deploye, erfolgt die Protokollierung durch die eigene Protokollierungsimplementierung von WebSphere. Wenn ich denselben Code wie eine eigenständige Anwendung ausführe, wird Java eigene Protokollierung verwendet, die verwendet wird

    
TMtech 10.07.2016 13:51
quelle
0

Laut Dokumentation von java-doc von commons-logging

Konkrete Unterklasse von LogFactory, die den folgenden Algorithmus zur dynamischen Auswahl einer Protokollierungsimplementierungsklasse zur Instanziierung eines Wrappers für Folgendes implementiert:

  • Verwenden Sie ein werkseitig konfiguriertes Konfigurationsattribut org.apache.commons.logging.Log zur Identifizierung der angeforderten Implementierungsklasse.
  • Verwenden Sie die Systemeigenschaft org.apache.commons.logging.Log, um sie zu identifizieren die angeforderte Implementierungsklasse.
  • Wenn Log4J verfügbar ist, geben Sie eine Instanz von org.apache.commons.logging.impl.Log4JLogger.
  • Wenn JDK 1.4 oder höher verfügbar ist, geben Sie eine Instanz von org.apache.commons.logging.impl.Jdk14Logger.
  • Andernfalls gebe eine Instanz von org.apache.commons.logging.impl.SimpleLog

Daraus folgt:

  • Commons-Logging ist mehr von Abstraktion. Es kann auch ohne LOG4J leben.
  • Wenn Log4j existiert, wählt es es. Sonst andere Standard verfügbar.
  • LOG4J ist beliebt, weil es die Ausgabe in eine Datei leicht umlenkt und die Protokollebenen flexibel konfiguriert werden können.

JavaDoc-URL: Ссылка

    
Vasanth Saminathan 24.10.2017 15:36
quelle

Tags und Links