coudnt verwenden, logback, weil log4j
Hallo ich habe Probleme mit logback und slf4j, im schreiben von einfachen app, später ist die Verpackung in ein Glas, und ich möchte hinzufügen, dass es die Protokollierung mit logback
im mit:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
<artifactId>activemq-client</artifactId>
<version>5.8.0</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
<dependency>
<groupId>commons-pool</groupId>
<artifactId>commons-pool</artifactId>
<version>${commons.pool.version}</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
<artifactId>ehcache</artifactId>
<version>${ehcache.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>${jedis.version}</version>
</dependency>
in Main habe ich:
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(loggerContext);
configurator.doConfigure(logbackFile)
es verwendet für das laden logback.xml Konfiguration außerhalb der jar-Datei
Die lustigste Sache ist, dass dieses Programm arbeitet auf der lokalen Maschine (Windows) (Lesen logback.xml erstellen Sie die Datei, schreiben einer Datei) aber wenn ich es hochladen auf den remote server (linux) habe ich seltsame Fehler
Exception in thread "main" java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
ist die Frage, warum er werfen wollte ch.qos.logback.classic.LoggerContext von org.slf4j.impl.Log4jLoggerFactory??
Habe ich nicht überall und zu jeder lib von log4j... ich meine, ich habe es auf die gesamte Maschine
eine zusätzliche info:
auf Windows habe ich Java von Oracle unter Linux habe ich openjdk - es kann ein problem sein?
//=================dependency tree
[INFO] +- org.apache.activemq:activemq-client:jar:5.8.0:compile
[INFO] | +- org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1:compile
[INFO] | +- org.fusesource.hawtbuf:hawtbuf:jar:1.9:compile
[INFO] | \- org.apache.geronimo.specs:geronimo-j2ee-management_1.1_spec:jar:1.0.1:compile
[INFO] +- com.mchange:c3p0:jar:0.9.2-pre6:compile
[INFO] | \- com.mchange:mchange-commons-java:jar:0.2.3.1:compile
[INFO] +- commons-pool:commons-pool:jar:1.6:compile
[INFO] +- postgresql:postgresql:jar:9.1-901.jdbc4:compile
[INFO] +- net.sf.ehcache:ehcache:jar:2.9.0:compile
[INFO] +- com.google.code.gson:gson:jar:2.2.4:compile
[INFO] +- redis.clients:jedis:jar:2.1.0:compile
[INFO] +- org.slf4j:slf4j-api:jar:1.7.5:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.1.3:compile
[INFO] +- ch.qos.logback:logback-core:jar:1.1.3:compile
[INFO] \- junit:junit:jar:4.11:test
[INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test
LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
Können Sie einen ganzen Baum Abhängigkeit von Ihrer Anwendung? Es scheint, Sie haben slf4j-log4j irgendwo auf deinem classpath. Das ist die log4j-Bindung.
aktualisiert, ich war auf der Suche an der Abhängigkeitsstruktur und ich nicht sehen, nichts mit log4j
Poste bitte die Ausgabe von
mvn dependency:tree
(run in der main-Projekt)Entweder poste das Ergebnis von mvn dependency:tree oder zumindest die Versionen der Abhängigkeiten. Wenn Sie gewissen es gibt keine org.slf4j:slf4j-log4j-dependency in Ihrer Bereitstellung, überprüfen Sie die (Klassen -) Pfad der Anwendung auf dem linux-Rechner. Das org.slf4j.impl.Log4jLoggerFactory Klasse hat irgendwoher kommen.
InformationsquelleAutor Tomasz Cy-man | 2015-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aufgrund einer bereits bestehenden Abhängigkeit von SLF4J in Ihrem Projekt oder in einigen anderen übernommenen Projekt, möglicherweise gibt es Konflikte während der Laufzeit. Hinzufügen eines Ausgrenzung zu meinem
POM
Datei für mich gearbeitet:InformationsquelleAutor gursahib.singh.sahni
Basierend auf dem, was er hier sagt: https://github.com/dropwizard/dropwizard/issues/1205 , es ist eine race-condition bei der Initialisierung der Bibliotheken. Ich hatte ein ähnliches problem, wo mein Programm funktionierte gut auf NetBeans, aber nicht die Arbeit in einem gnome-terminal. Eine race-condition, erklärt die inkonsistenten Verhalten Häufig in mehreren Fällen. Verstehe ich nicht, warum dies geschieht, aber es ist eine Problemumgehung, die hier für einen konkreten Fall: https://gist.github.com/mbknor/34944ea4589a5fc6974c . Dieses Beispiel ist von diesem link, es kann nicht sein anwendbar auf die spezifischen oben genannten Fall, kann aber vermutlich angepasst werden, die in bestimmten Fällen ziemlich leicht, wenn Sie verstehen, was Los ist.
InformationsquelleAutor legs
Versuchen herausnehmen der Abhängigkeit
Diese Abhängigkeit ist enthalten in
Wie Sie sehen in der logback-classic pom-Datei - http://central.maven.org/maven2/ch/qos/logback/logback-classic/1.1.3/logback-classic-1.1.3.pom
Stellen Sie außerdem sicher, dass, wenn Sie initialisieren Sie Ihre logger, es ist modelliert nach
InformationsquelleAutor Michael
Hatte ich zum wechseln der logger in mein controller, von:
zu
InformationsquelleAutor Fresh Codemonger