logback.xml文件中%d参数输出到graylog中的时间少了8小时
来源:14-4 springboot集成graylog(下)
网络时空
2020-04-09
师兄,下午好!
我在graylog中察看eureka的输出日志时,发现logback.xml文件中输出到graylog中的时间都少了8个小时,而graylog自身输出的时间戳 和 eureka在 rancher中输出的时间戳都是正确的,和我本地主机的时间完全一致,就是logback.xml文件中%d参数输出到graylog的时间比当前时间少了8个小时。
(具体可以察看下面两个附件说明)
和你视频中讲的graylog自身的时间戳不对少了8个小时的情况不一样,你当时视频中的处理方式,是用administrator用户重新登录一下来解决的。
我现在察看graylog对应的容器的date -R时区和rancher-server及 rancher-agent两台主机的 date -R时区 都是正常的,不是 utc, 是北京时区。
请问我这种情况,我该如何处理呢? 就是说 logback.xml文件中%d参数输出到graylog的时间都比我实际时间少了8个小时。
如下是我本地eureka项目对应的logback.xml文件的具体配置内容
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>
%d - %msg%n
</pattern>
</layout>
</appender>
<appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
<graylogHost>192.168.16.44</graylogHost>
<graylogPort>12201</graylogPort>
<maxChunkSize>508</maxChunkSize>
<useCompression>true</useCompression>
<encoder class="de.siegmar.logbackgelf.GelfEncoder">
<includeRawMessage>false</includeRawMessage>
<includeMarker>true</includeMarker>
<includeMdcData>true</includeMdcData>
<includeCallerData>false</includeCallerData>
<includeRootCauseData>false</includeRootCauseData>
<includeLevelName>true</includeLevelName>
<shortPatternLayout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d - %m%nopex</pattern>
</shortPatternLayout>
<fullPatternLayout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d - %m%n</pattern>
</fullPatternLayout>
<staticField>app_name:eureka</staticField>
<staticField>os_arch:${os.arch}</staticField>
<staticField>os_name:${os.name}</staticField>
<staticField>os_version:${os.version}</staticField>
</encoder>
</appender>
<root level="info">
<appender-ref ref="consoleLog" />
<appender-ref ref="GELF" />
</root>
3回答
-
网络时空
提问者
2020-04-21
感谢师兄哈,问题已经解决了,在Dockerfile文件中设计shanghai时区,显示就正常了
012020-04-21 -
网络时空
提问者
2020-04-11
目前这个实战课程,所有内容我都操作了一遍,目前就还有这个问题未解决。我用的所有镜像文件都是参考你的内容生成的镜像文件。
我在网上查了下,有人说,这是机器时间默认为utc,utc和cst相差8个小时,uct+8=cst,从上面显示来看确实是这样
有网上如下介绍 (附件是我虚拟机上timedatectl运行显示结果)
Local time: Fri 2018-07-27 00:54:04 CST 本地时间为CST
Universal time: Thu 2018-07-26 16:54:04 UTC UTC时间
RTC time: Thu 2018-07-26 16:54:04 硬件时间默认使用UTC时间
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
网上介绍的解决方法如下(不过,我试了下,还是未能解决)
1 确认时区是否为shanghai
[root@xxx ~]# ll /etc/localtime
lrwxrwxrwx 1 root root 35 Jul 27 2018 /etc/localtime -> ../usr/share/zoneinfo/Asia/Shanghai
如果不正确,手动修改时区:
[root@xxx ~]# timedatectl set-timezone Asia/Shanghai
或者:
[root@xxx ~]# ln -sf /usr/share/zoneinfo/Universal /etc/localtime
2 检查本地时间与硬件时间
[root@xxx ~]# timedatectl
Local time: Fri 2018-07-27 00:54:04 CST 本地时间为CST
Universal time: Thu 2018-07-26 16:54:04 UTC UTC时间
RTC time: Thu 2018-07-26 16:54:04 硬件时间默认使用UTC时间
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
3 修改本地时间
[root@xxx ~]# date -s '-8hour'
Thu Jul 26 16:54:30 CST 2018
4 将本地时间写入硬件时间并重新检查
[root@xxx ~]# hwclock -w
[root@xxx ~]# timedatectl
Local time: Thu 2018-07-26 16:55:11 CST
Universal time: Thu 2018-07-26 08:55:11 UTC
RTC time: Thu 2018-07-26 08:55:11
Time zone: Asia/Shanghai (CST, +0800)
NTP enabled: yes
NTP synchronized: no
RTC in local TZ: no
DST active: n/a
--------------------------------------------------
UTC(Universal Time/Temps Cordonné 世界标度准知时间道)
CST(Central Standard Time 国家标准时间,一说中原标准时间);
中国标准时间(China Standard Time)
GMT + 8 = UTC + 8 = CST00 -
廖师兄
2020-04-10
你这里面错误的时间,是日志的文本内容。说你Java项目打印出来就是不对的,肯定是java所在的运行环境时间不对。你用的是我给的docker镜像吗
032020-04-17
SpringCloud Finchley(M2+RELEASE+SR2)微服务实战
5668 学习 · 2489 问题
相似问题