log spring如何引导jar文件异常

时间:2017-08-07 11:40:56

标签: java spring tomcat logging executable-jar

当您创建Tomcat嵌入式 JAR 文件并将其安装在服务器上时,如何访问Exceptions?最近我的服务器和进程突然停止,我不知道发生了什么。我检查了Windows事件查看器但找不到任何内容。 例如,在文件上是否有异常写入的地方?

2 个答案:

答案 0 :(得分:3)

  

默认情况下,Spring Boot只会登录到控制台,而不会   写日志文件。如果你想写除日志文件   控制台输出需要设置 logging.file logging.path 属性   (例如在你的application.properties中)。

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)

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

为了让生活更轻松,您可以使用 logback.xml logback-spring.xml

以下是 logback.xml 的示例。将其包含在 src / main / resources 目录中。

<?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>

以上配置将生成日志到JAR文件的工作目录,其名称如 logFile.yyyy.MM.dd.log

答案 1 :(得分:1)

您应该在类路径中添加application.properties文件,并在那里设置日志记录属性。

  

如果您需要对记录进行的唯一更改是设置级别   各种记录器然后你可以在application.properties中使用   &#34; logging.level&#34;前缀,例如

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

您还可以设置要记录的文件的位置(除了   console)使用&#34; logging.file&#34;。

请参阅here