2016-04-04 15 views
0

Könnte jemand mir den Unterschied zwischen den Ermittlungs & Bindungsmethoden erklären, gefolgt von der Slf4j & jcl.Slf4j vs JCL - Bindemethode

Es sind nur ein oder zwei Dokumente online verfügbar & Ich kann den Unterschied nicht genau verstehen. Seems like JCL tries to look for implementation during runtime, but so does Slf4j - it tries to look for implementation of StaticLoggerBinder on classpath.

SLF4J Code:

if (loggerFactoryClassLoader == null) { 
      paths = ClassLoader.getSystemResources(STATIC_LOGGER_BINDER_PATH); 
     } else { 
      paths = loggerFactoryClassLoader.getResources(STATIC_LOGGER_BINDER_PATH); 
     } 

Was ich hier fehlt bin ist?

Antwort

1

Commons Logging findet ihre Umsetzung durch die Schritte in der Bedienungsanleitung dokumentiert mit:

Der Standard LogFactory Implementierung verwendet den folgenden Discovery-Prozess, um zu bestimmen, welche Art von Log Umsetzung sollte es verwenden (der Prozess endet, wenn die erste positive Übereinstimmung - um - gefunden wird):

  1. Suchen Sie nach einer Konfigurationsattribut dieser Fabrik mit dem Namen org.apache.commons.logging.Log (für die abwärts~~POS=TRUNC dieser API pre-1.0-Versionen, eine Attribut org.apache.commons.log ging.log wird ebenfalls konsultiert). Konfigurationsattribute können explizit mit Java-Code festgelegt werden, sie werden jedoch häufiger durch Platzieren einer Datei namens commons-logging.properties im Klassenpfad festgelegt. Wenn eine solche Datei existiert, wird jeder Eintrag in der Eigenschaftendatei zu einem "Attribut" der LogFactory. Wenn es mehr als eine solche Datei im Klassenpfad gibt, verwenden die Releases von Commons-Logging vor 1.1 einfach den ersten gefundenen. Ab Version 1.1 kann jede Datei einen Prioritätsschlüssel definieren, und die Datei mit der höchsten Priorität wird verwendet (keine Prioritätsdefinition impliziert Priorität von Null). Wenn mehrere Dateien dieselbe Priorität haben, wird die erste gefunden.

    Das Definieren dieser Eigenschaft in einer Datei commons-logging.properties ist die empfohlene Methode zum expliziten Auswählen einer Protokollimplementierung.

  2. Suchen Sie nach einer Systemeigenschaft mit dem Namen org.apache.commons.logging.Log (für die Abwärtskompatibilität zu Versionen dieser API vor Version 1.0 wird auch eine Systemeigenschaft org.apache.commons.logging.log verwendet).

  3. Wenn das Log4J-Protokollierungssystem im Anwendungsklassenpfad verfügbar ist, verwenden Sie die entsprechende Wrapper-Klasse (Log4JLogger).
  4. Wenn die Anwendung auf einem JDK 1.4-System ausgeführt wird, verwenden Sie die entsprechende Wrapper-Klasse (Jdk14Logger).
  5. Wechseln Sie zurück zum Standardprotokollierungs-Wrapper (SimpleLog).

Der Hauptunterschied zwischen SLF4J und Commons Logging ist, dass die Commons API Protokollierung ziemlich primitiv ist, während die SLF4J API viel flexibler ist.