spring引导日志记录问题(带有logback)

dfddblmv  于 2021-07-06  发布在  Java
关注(0)|答案(2)|浏览(438)

我用logback写了一个spring启动应用程序来记录文件。
我的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)运行应用程序时,应用程序没有启动,并且在创建应用程序的文件夹中,日志\路径\未定义。
我在application.properties中定义了logging.file.path,当logging.file.path为define log时,我将logback文件重命名为logback spring,并从doc中将其命名为logback spring。
我不明白,如果我在ide和aws中运行应用程序,为什么会起作用,而如果我在终端上运行java-jar springapp.jar,为什么会不起作用。
为什么会这样?如何解决这个问题?
请帮帮我!
谢谢你的帮助。

ipakzgxi

ipakzgxi1#

我猜您在运行jar文件之前忘记了导出log\u path变量。你可以为此创建一个脚本文件。比如start.sh


# !/bin/bash

export LOG_PATH=/var/logs/spring-app-logs/
java -jar springAPP.jar

然后跑 ./start.sh

a64a0gku

a64a0gku2#

你没有定义 LOG_PATH 在logback-spring.xml中
添加以下行:

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

在下一行之后

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


只是变了 LOG_DIR 进入 LOG_PATH 使:

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

相关问题