【问题标题】:Spring boot logging problem (with logback)Spring Boot 日志记录问题(带 logback)
【发布时间】:2021-03-15 12:22:25
【问题描述】:

我编写了使用 logback 记录到文件的 Spring Boot 应用程序。

我的 logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property name="LOG_DIR" value="logs"/>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>
                %d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger.%M - %msg%n
            </pattern>
        </encoder>
    </appender>
    <appender name="SAVE-TO-FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/log.log</file>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>
                %d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
            </Pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- rollover daily & on size-->
            <fileNamePattern>
                ${LOG_PATH}/archived/log_%d{dd-MM-yyyy}_%i.log
            </fileNamePattern>
            <maxFileSize>200MB</maxFileSize>
            <maxHistory>10</maxHistory>
            <totalSizeCap>2GB</totalSizeCap>
        </rollingPolicy>
    </appender>
    <springProfile name="dev">
        <root level="INFO">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="SAVE-TO-FILE"/>
        </root>
        <logger name="com.elektrosoft.centralServer.telekomCentralServer" additivity="false" level="DEBUG">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="SAVE-TO-FILE"/>
        </logger>
    </springProfile>
    <springProfile name="prod">
        <root level="INFO">
            <appender-ref ref="SAVE-TO-FILE"/>
        </root>
        <logger name="com.elektrosoft.centralServer.telekomCentralServer" additivity="false" level="DEBUG">
            <appender-ref ref="SAVE-TO-FILE"/>
        </logger>
    </springProfile>
</configuration>

我的应用程序.properties

logging.level.root=info
logging.level.com.elektrosoft.centralServer.telekomCentralServer=debug
logging.level.org.hibernate.SQL=error
logging.file.path=/var/logs/spring-app-logs/
logging.file.name=log.log
logging.pattern.file=%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
logging.pattern.console=%d{dd-MM-yyyy HH:mm:ss.SSS} %magenta([%thread]) %highlight(%-5level) %logger.%M - %msg%n

当我从 intellij IDE 运行应用程序并将日志写入该位置的文件时,这一切正常。我将此应用程序部署到 aws beanstalk 并且一切正常。问题是当我从终端(windows 或 linux)运行应用程序时,应用程序没有启动,并且在创建应用程序的文件夹 LOG_PATH_IS_UNDEFINED 文件夹中。

我在 application.properties 中定义了 logging.file.path,我将 logback 文件重命名为 logback-spring,并且在定义 logging.file.path 时从文档中重命名 LOG_PATH 由 spring 定义。

如果我从 IDE 和 AWS 中运行应用程序,但如果我使用 java -jar springAPP.jar 从终端运行时,我不明白为什么这会起作用。

为什么会这样?如何解决这个问题?

请帮忙!

感谢您的所有帮助。

【问题讨论】:

    标签: java spring spring-boot spring-logback


    【解决方案1】:

    您没有在 logback-spring.xml 中定义 LOG_PATH

    添加以下行:

        <property name="LOG_PATH" value="./logsFolder"/>
    

    在下一行之后

        <property name="LOG_DIR" value="logs"/>
    

    或

    刚刚把LOG_DIR改成了LOG_PATH

    制作:

        <property name="LOG_PATH" value="./logsFolder"/>
    

    【讨论】:

    • 现在文件夹没有创建但是应用没有运行只有spring boot logo和end。
    • 尝试``只需添加'/'
    • 当我从 IDE 运行时运行正常,但是当我从命令行运行时只有 spring boot 标志并且在 x 秒程序结束后,没有任何内容写入日志或控制台。现在文件夹没有创建但是spring boot没有运行!
    • 请注意我对答案所做的修改。我在日志路径值之前添加了“./”。请注意,如果调用logsFolder,则要创建的日志文件夹
    【解决方案2】:

    我猜你在运行 jar 文件之前忘记导出 LOG_PATH 变量。您可以为此创建一个脚本文件。 喜欢 start.sh

    #!/bin/bash
    export LOG_PATH=/var/logs/spring-app-logs/
    java -jar springAPP.jar
    

    然后运行./start.sh

    【讨论】:

      猜你喜欢
      • 2021-06-26
      • 1970-01-01
      • 2019-02-24
      • 2016-09-04
      • 2023-01-26
      • 1970-01-01
      • 2019-05-11
      • 1970-01-01
      • 2022-07-06
      相关资源
      最近更新 更多