Spring 引导日志记录问题(使用 logback)
Spring boot logging problem (with logback)
我编写 spring 启动应用程序,使用 logback 记录到文件。
我的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>
我的application.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 -罐子 springAPP.jar.
为什么会这样?如何解决这个问题?
请帮忙!
感谢您的帮助。
我猜你忘记了在 运行 jar 文件之前导出 LOG_PATH 变量。您可以为此创建一个脚本文件。
喜欢start.sh
#!/bin/bash
export LOG_PATH=/var/logs/spring-app-logs/
java -jar springAPP.jar
和运行./start.sh
你没有在你的logback中定义LOG_PATH
-spring.xml
添加以下行:
<property name="LOG_PATH" value="./logsFolder"/>
在下一行之后
<property name="LOG_DIR" value="logs"/>
或
刚把LOG_DIR
改成了LOG_PATH
制作:
<property name="LOG_PATH" value="./logsFolder"/>
我编写 spring 启动应用程序,使用 logback 记录到文件。
我的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>
我的application.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 -罐子 springAPP.jar.
为什么会这样?如何解决这个问题?
请帮忙!
感谢您的帮助。
我猜你忘记了在 运行 jar 文件之前导出 LOG_PATH 变量。您可以为此创建一个脚本文件。 喜欢start.sh
#!/bin/bash
export LOG_PATH=/var/logs/spring-app-logs/
java -jar springAPP.jar
和运行./start.sh
你没有在你的logback中定义LOG_PATH
-spring.xml
添加以下行:
<property name="LOG_PATH" value="./logsFolder"/>
在下一行之后
<property name="LOG_DIR" value="logs"/>
或
刚把LOG_DIR
改成了LOG_PATH
制作:
<property name="LOG_PATH" value="./logsFolder"/>