前言

由于项目是部署在docker容器中的,使用的是docker-compose进行的容器编排,所以导致日志输出时间相差8小时的原因有两种:

  1. 容器内时区与宿主机时区不一致,导致容器内获取的时间与宿主机时间不一致
  2. logback在配置时间格式的时候没有指定时区,采用的默认时区,会导致与宿主机时区不一致

方案一

查看宿主机时间与容器内时间

date

docker exec -it 容器名或容器id date

如果容器运行时区与宿主机运行时区一致,则需要按照方案二进行修改

方案二

 找到logback.xml文件中的如下配置

<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}.%d{yyyy-MM-dd}.zip</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS,CTT} %level [%thread] %logger{36} [%file : %line] %msg%n
            </pattern>
        </encoder>
    </appender>

 需要在

%d{yyyy-MM-dd HH:mm:ss.SSS}中加上CTT指定时区

重新打包构建镜像后问题解决

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐