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
Weil Sie versuchen zu bekommen LoggerFactory und werfe es LoggerContext: 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

Schreibe einen Kommentar