前言
当项目用容器部署时,会有项目日志的存放路径问题,如果路径用绝对路径,那么会有Windows环境和Linux环境不一致问题,因此logback日志存放路径的配置要使用相对路径,但是相对路径基于什么位置却是一个问题。
验证
如何验证的就不贴了,咱们直接说结论
结论
logback配置里的相对路径是基于Dockfile里的WORKDIR来的,如果不配置默认就是/,配置的话相对于配置的工作路径。
logback.xml
其中的LOG_HOME采用相对路径的方式,日志存放在…/logs文件夹里。
<configuration scan="true" scanPeriod="60 seconds">
<property name="LOG_HOME" value="../logs"/>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<appender name="Info"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/oam-api.info.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<appender name="Error"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/oam-api.error.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- <pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern> -->
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--<logger name="com.harmonycloud.caas.oam.dal.mapper.AlarmRecordMapper" level="DEBUG"></logger>-->
<!--<logger name="com.harmonycloud.caas.oam.schedule.task" level="DEBUG"/>-->
<root level="INFO">
<appender-ref ref="Info"/>
<appender-ref ref="Error"/>
<appender-ref ref="STDOUT"/>
</root>
</configuration>
Dockerfile
FROM openjdk:11.0.7
ADD api/target/1.0-SNAPSHOT.jar /