2016-07-26 15 views
0

ich log4j zu verwenden Ich versuche es in der Datei zu protokollieren Hier ist der Codelog4j versuchen, in der Datei zu protokollieren

protected static Logger logger = Logger.getLogger(Application.class); 
    private static final String DIRECTORY = "/Users/me/Desktop"; 
    private static final String EXTENSION = ".log"; 

    protected void setupLogger(String fileName) { 
     SimpleLayout layout = new SimpleLayout(); 
     FileAppender appender = new FileAppender(layout, DIRECTORY + "/logs/" + fileName + EXTENSION, false); 
     logger.addAppender(appender); 
     logger.setLevel((Level) Level.DEBUG); 
    } 

und hier ist der pom, die ich benutze http://pastebin.com/vXdFtzSU

Der Stacktrace, die ich bin immer ist hier

Error:(40, 28) java: incompatible types: org.apache.log4j.FileAppender cannot be converted to org.apache.log4j.Appender 

ich dieser Antwort zu folgen versuchen configure log4j to log to custom file at runtime

+0

können Sie s wie Ihre Importanweisung – Raghu

+0

importieren org.apache.log4j.Level; importieren org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; importieren org.apache.log4j.FileAppender; –

+0

Versuchen Sie herauszufinden, Abhängigkeit Baum von unten Befehl mvn Abhängigkeit: Baum, und veröffentlichen Sie es hier. Es gibt einen Versionskonflikt von log4j jars.i denke, dass Sie log4j von anderen Artefaktabhängigkeiten ausschließen müssen. –

Antwort

2

versuchen Hallo Ihr Maven Abhängigkeiten changin fügen diese Abhängigkeit:

<dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.17</version> 
    </dependency> 

und Federverschluß Abhängigkeiten ändern Protokollierung Abhängigkeiten auszuschließen:

 <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
      <exclusions> 
      <exclusion> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-logging</artifactId> 
      </exclusion> 
      </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
      <exclusions> 
     <exclusion> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-logging</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 

dann try/catch-Anweisung hinzufügen:

protected void setupLogger(String fileName) { 

     try { 
      SimpleLayout layout = new SimpleLayout(); 
      FileAppender appender; 
      appender = new FileAppender(layout, DIRECTORY + "/logs/" +  fileName + EXTENSION, false); 
      logger.addAppender(appender); 
      logger.setLevel((Level) Level.DEBUG); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
+0

immer noch der gleiche Fehler –

+1

Überprüfen Sie das Update meiner Antwort –

+0

Jetzt speichert die Datei auf den Pfad, den ich angegeben habe, aber ich bekomme Stacktrace von SetFile http: //pastebin.com/FZ6nmTeY –

0

Es sieht fast so aus, als ob Sie zur Laufzeit eine andere Version des Libraray verwenden als zur Kompilierzeit. Wenn die Typen wirklich inkompatibel wären, würde dies zu einem Compilerfehler führen. Wenn Sie Ihr Programm in einer speziellen Umgebung wie Tomcat usw. ausführen, prüfen Sie, ob dort die gleiche Version von log4j installiert ist.

0

Warum nicht log4j.properties verwenden Es ist eine sehr einfache Konfiguration in Datei drucken.

log4j.logger.register=INFO,R7 
log4j.appender.R7=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.R7.DatePattern='.'yyyyMMdd 
log4j.appender.R7.File=/appLogs/address/logFile.log 
log4j.appender.R7.layout=org.apache.log4j.PatternLayout 
log4j.appender.R7.layout.ConversionPattern=%d{dd MMM yyyy HH:mm:ss} | %m%n 


private static final Logger logger = Logger.getLogger("register"); 

logger.info("print to file and console"); 
+0

Ich habe das schon versucht, aber es liest nicht meine Eigenschaften. hier ist die Eigenschaften http://pastebin.com/Y8JKCuTY vielleicht wegen Frühling –