JavaRush /Java-Blog /Random-DE /Wir verbinden die Protokollierung mit unserem JavaRush-Pr...
Дмитрий Яковенко
Level 35
Москва

Wir verbinden die Protokollierung mit unserem JavaRush-Projekt (slf4f und log4j)

Veröffentlicht in der Gruppe Random-DE
In diesem Artikel von mir können Sie lesen, wie Sie Maven mit Ihrem JavaRush-Projekt verbinden . Im Folgenden wird davon ausgegangen, dass Sie wissen, wie das geht. Wenn wir slf4j verwenden wollen, dann brauchen wir eine Abhängigkeit:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
</dependency>
Danach machen wir:
public static void main(String[] args) throws IOException {
    Logger logger = LoggerFactory.getLogger(Solution.class);
    logger.info("hello world!");
}
Und wir bekommen den Fehler:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Was im Allgemeinen logisch ist. slf4j ist ein Wrapper, aber worum haben wir ihn gewickelt? Nichts? Nun, uns ist ein Fehler unterlaufen. Sie können es um eines der folgenden Elemente wickeln: log4j, util.logging, NOP, System.err, JCL, logback. Weitere Einzelheiten finden Sie in der Originalanleitung . Schauen wir uns das Beispiel von log4j und System.err an: 1) Beginnen wir mit etwas Einfachem, mit System.err . Fügen Sie dazu diese (slf4j-simple) zur vorherigen Abhängigkeit (slf4j-api) hinzu.
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.30</version>
</dependency>
Wir nehmen die gleichen Versionen, Stand 10.05.2021 ist es 1.7.30. Wenn Sie Abhängigkeiten von https://mvnrepository.com/ übernehmen , vergessen Sie nicht, sie zu entfernen
<scope>test</scope>
Andernfalls funktionieren Ihre Protokolle nur in Tests. 2) Versuchen wir nun, log4j zu konfigurieren . Dazu müssen wir zwei Abhängigkeiten hinzufügen: log4j selbst und eine Ebene zwischen slf4j und log4j (slf4j-log4j12). Es sieht aus wie das:
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.30</version>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>
Es ist klar, dass wir (slf4j-simple) entfernen müssen, damit slf4j nicht verwirrt ist, mit welchem ​​Logger es arbeiten soll. Und verlassen Sie (slf4j-api), da dies slf4j ist. Bezüglich der 2 hinzugefügten Abhängigkeiten. log4j, wir fügen das alte hinzu (ab Mai 2012, ich weiß nicht warum, Sie können mit anderen experimentieren). Seine Version ist 1.2.17. Damit slf4j damit funktioniert, benötigen Sie eine entsprechende Ebene – slf4j-log4j12, wobei die letzten Zeichen (12) die log4j-Version bedeuten. In diesem Fall sollte die Version von slf4j-api und slf4j-log4j12 1.7.30 sein – die derzeit aktuellste stabile Version. Nachdem Sie die Abhängigkeiten verbunden und das Maven-Projekt aktualisiert haben. Damit log4j funktioniert, benötigen Sie zwei weitere Dinge: 1) Richten Sie eine Konfigurationsdatei ein. Wir lesen, wählen aus, kopieren. 2) Lesen Sie vor der Arbeit die log4j-Konfiguration:
PropertyConfigurator.configure("d:\\Java\\JavaRushTasks\\4.JavaCollections\\log4j.properties");
Na ja, oder wo Sie die Datei haben. Wenn Sie alle Protokolle sehen möchten, vergessen Sie nicht, die Protokollierungsebene auf ALLE zu setzen. Wir ergänzen den Lebenslauf um log4j und slf4j. Du bist wunderschön! Wenn es geholfen hat - liken, abonnieren, klingeln!)))
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION