我用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,为什么会不起作用。
为什么会这样?如何解决这个问题?
请帮帮我!
谢谢你的帮助。
2条答案
按热度按时间ipakzgxi1#
我猜您在运行jar文件之前忘记了导出log\u path变量。你可以为此创建一个脚本文件。比如start.sh
然后跑
./start.sh
a64a0gku2#
你没有定义
LOG_PATH
在logback-spring.xml中添加以下行:
在下一行之后
或
只是变了
LOG_DIR
进入LOG_PATH
使: