LogBack无法在Spring Boot应用中设置时区

发布于 2025-01-24 04:28:25 字数 2678 浏览 3 评论 0原文

我有一个与 elk 相关的示例。即使我在 logback-spring.xml 中定义了时区,并将我的时区设置在 dateformat中: kibana 的tz ,文档中的时间戳为3小时时间戳。我认为无法检测到时区。

这是下面显示的屏幕截图。 image

这是我的项目链接:项目链接

我该如何解决该问题?

这是我的logback-spring.xml下面显示的。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property scope="context" name="log.fileExtension" value="log"/>
    <property scope="context" name="log.fileName" value="Springboot-Elk"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS,Europe/Istanbul}] [${HOSTNAME}] [%thread] %level %logger{36}@%method:%line - %msg%n</pattern>
        </layout>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.fileName}.%d{yyyy-MM-dd}.${log.fileExtension}</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS,Europe/Istanbul}] [${HOSTNAME}] [%thread] %level %logger{36}@%method:%line - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>logstash:5044</destination>
        <!-- encoder is required -->
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <timeZone>Europe/Istanbul</timeZone>
            <timestampPattern>yyyy-MM-dd HH:mm:ss.SSS,Europe/Istanbul</timestampPattern>
        </encoder>
        <keepAliveDuration>5 minutes</keepAliveDuration>
    </appender>

    <logger name="org.hibernate" level="ERROR">
        <appender-ref ref="STASH"/>
    </logger>

    <root level="ERROR">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="STASH"/>
        <appender-ref ref="FILE"/>
    </root>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="STASH"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

I have an example related with ELK in my Spring Boot. Even if I defined timezone in logback-spring.xml and set my timezone in dateFormat:tz of Kibana, timestamp in document is 3 hours back of timestamp. I think timezone cannot be detected.

Here is the screenshot shown below.
Image

Here is my project link : Project Link

How can I fix that issue?

Here is my logback-spring.xml shown below.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property scope="context" name="log.fileExtension" value="log"/>
    <property scope="context" name="log.fileName" value="Springboot-Elk"/>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS,Europe/Istanbul}] [${HOSTNAME}] [%thread] %level %logger{36}@%method:%line - %msg%n</pattern>
        </layout>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.fileName}.%d{yyyy-MM-dd}.${log.fileExtension}</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS,Europe/Istanbul}] [${HOSTNAME}] [%thread] %level %logger{36}@%method:%line - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="STASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>logstash:5044</destination>
        <!-- encoder is required -->
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <timeZone>Europe/Istanbul</timeZone>
            <timestampPattern>yyyy-MM-dd HH:mm:ss.SSS,Europe/Istanbul</timestampPattern>
        </encoder>
        <keepAliveDuration>5 minutes</keepAliveDuration>
    </appender>

    <logger name="org.hibernate" level="ERROR">
        <appender-ref ref="STASH"/>
    </logger>

    <root level="ERROR">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="STASH"/>
        <appender-ref ref="FILE"/>
    </root>

    <root level="INFO">
        <appender-ref ref="STDOUT"/>
        <appender-ref ref="STASH"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

迷雾森÷林ヴ 2025-01-31 04:28:25

您可以尝试更改控制台日志appender标签

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}{GMT+3}] [${HOSTNAME}] [%thread] %level %logger{36}@%method:%line - %msg%n</pattern>
        </layout>
    </appender>

Can you try changing console log appender tag to

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}{GMT+3}] [${HOSTNAME}] [%thread] %level %logger{36}@%method:%line - %msg%n</pattern>
        </layout>
    </appender>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文