2017-08-07 2 views
0

Wenn Sie Tomcat eingebettet JAR Datei erstellen und installieren Sie es auf einem Server, wie kann auf die Ausnahmen zugreifen? In letzter Zeit hören mein Server und mein Prozess plötzlich auf und ich weiß nicht, was vor sich geht. Ich habe Windows Event Viewer überprüft, konnte aber nichts finden. Gibt es einen Ort, an dem die Exception beispielsweise in eine Datei schreibt?Wie Protokoll Spring boot jar Datei Ausnahmen

+0

Blick in die catalina.out Datei in Ihrem TOMCAT_HOME erzeugen/logs-Verzeichnis – Jens

+0

@Jens wo ist TOMCAT_HOME? – Kenji

+0

Es hängt davon ab, wo Sie es installiert haben – Jens

Antwort

1

standardmäßig Frühlings-Boot wird nur auf die Konsole anmelden und wird nicht Schreib Log-Dateien. Wenn Sie Protokolldateien zusätzlich zur Konsolenausgabe schreiben möchten, müssen Sie logging.file oder logging.path Eigenschaft (z. B. in Ihrer application.properties) festlegen.

java -Dlogging.file=target/my_logfile.log -jar spring_boot_app.jar 
or 
java -Dlogging.path=target/logs -jar spring_boot_app.jar 
(Will create spring.log file inside target/logs) 

Ref: http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html#boot-features-logging-file-output

Um das Leben leichter machen können Sie logback.xml oder logback-spring.xml

Es folgt eine Probe von logback.xml verwenden . Fügen Sie es in src/main/resources Verzeichnis ein.

<?xml version="1.0" encoding="UTF-8"?> 

<configuration scan="true"> 
    <include resource="org/springframework/boot/logging/logback/base.xml"/> 

<!-- The FILE and ASYNC appenders are here as examples for a production configuration --> 

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
     <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> 
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern> 
      <maxHistory>90</maxHistory> 
     </rollingPolicy> 
     <encoder> 
      <charset>utf-8</charset> 
      <Pattern>%d %-5level [%thread] %logger{0}: %msg%n</Pattern> 
     </encoder> 
    </appender> 

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"> 
     <queueSize>512</queueSize> 
     <appender-ref ref="FILE"/> 
    </appender> 


    <!-- your project package --> 
    <logger name="com.test" level="INFO"/> 

    <!-- <logger name="javax.activation" level="WARN"/> 
    <logger name="javax.mail" level="WARN"/> 
    <logger name="javax.xml.bind" level="WARN"/> 
    <logger name="ch.qos.logback" level="WARN"/> 
    <logger name="com.codahale.metrics" level="WARN"/> 
    <logger name="com.ryantenney" level="WARN"/> 
    <logger name="com.sun" level="WARN"/> 
    <logger name="com.zaxxer" level="WARN"/> 
    <logger name="io.undertow" level="WARN"/> 
    <logger name="io.undertow.websockets.jsr" level="ERROR"/> 
    <logger name="org.apache" level="WARN"/> 
    <logger name="org.apache.catalina.startup.DigesterFactory" level="OFF"/> 
    <logger name="org.bson" level="WARN"/> 
    <logger name="org.hibernate.validator" level="WARN"/> 
    <logger name="org.hibernate" level="WARN"/> 
    <logger name="org.hibernate.ejb.HibernatePersistence" level="OFF"/> 
    <logger name="org.springframework" level="WARN"/> 
    <logger name="org.springframework.web" level="WARN"/> 
    <logger name="org.springframework.security" level="WARN"/> 
    <logger name="org.springframework.cache" level="WARN"/> 
    <logger name="org.thymeleaf" level="WARN"/> 
    <logger name="org.xnio" level="WARN"/> 
    <logger name="springfox" level="WARN"/> 
    <logger name="sun.rmi" level="WARN"/> 
    <logger name="liquibase" level="WARN"/> 
    <logger name="LiquibaseSchemaResolver" level="INFO"/> 
    <logger name="sun.rmi.transport" level="WARN"/> --> 

    <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"> 
     <resetJUL>true</resetJUL> 
    </contextListener> 

    <root level="INFO"> 
     <appender-ref ref="CONSOLE"/> 
     <appender-ref ref="FILE"/> 
    </root> 

</configuration> 

Above Konfiguration werden die Protokolle an den Arbeitsverzeichnis der JAR-Datei mit den Namen wie logFile.yyyy.MM.dd.log

+0

Ich bekomme den ersten Teil und es funktioniert. Für ein besseres Leben möchte ich den zweiten Teil Ihrer Antwort verwenden. Wenn es in Ordnung ist, nur diesen Code mit logback.xml benannte Datei in Ressourcen? – Kenji

+0

Ja, ich habe es mit dem neuesten Springboot '1.5.6' getestet. Es sollte funktionieren. Bitte ersetzen Sie 'com.test' durch das Basispaket Ihres Projekts. – 11thdimension

+0

Was ist der Vorteil der Verwendung von logback.xml vs @ Mike adamenko's Antwort. Ich meine einfach 3 Zeilen in Eigenschaften? – Kenji

1

Sie sollten die Datei application.properties in Ihrem Klassenpfad hinzufügen und dort die Protokollierungseigenschaften festlegen.

Wenn die einzige Änderung, die Sie Protokollierung vornehmen müssen die Ebenen der verschiedenen Logger eingestellt ist, dann können Sie das in application.properties tun die „logging.level“ Präfix, z.B.

logging.level.org.springframework.web=DEBUG 
logging.level.org.hibernate=ERROR 
logging.file=C:\myapplication.log 

Sie auch den Speicherort einer Datei festlegen können sich anmelden (zusätzlich zu der Konsole) mit „logging.file“.

Siehe here

+0

Wie kann ich die Datei im Stamm der JAR-Datei? – Kenji

+0

jar ist ein einfaches Zip-Archiv. Übrigens können Sie es Ihrem Klassenpfad hinzufügen. Die Antwort wurde aktualisiert. –

+0

Es wäre logging.file = mylogfile.log und es wird auf JAR-Root speichern. Danke, deine Antwort war nützlich. – Kenji

Verwandte Themen