Springboot程序接入logstash后,日志文件中文变成了unicode编码

问题

Springboot程序在接入ELK时,需要引入依赖logstash

        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>${logback-encoder.version}</version>
        </dependency>

还需在日志文件中配置一下logstash的日志输出格式、名称等

    <appender name="SYSTEM_FILE_JSON" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>${log.path}/apps.json</File>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>
                ${log.path}/apps.%d{yyyyMMdd}.json.zip
            </fileNamePattern>
            <maxHistory>30</maxHistory>
        </rollingPolicy>

        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <mdc/>
                <pattern>
                    <pattern>
                        {
                        "project":"${project.name}",
                        "app":"${spring.application.name}",
                        "host":"${hostName}",
                        "@timestamp":"%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZ}",
                        "logger": "%logger",
                        "level": "%level",
                        "thread": "%thread",
                        "msg":"%message"
                        }
                    </pattern>
                </pattern>
                <!--
                  <logLevelValue/>
                -->
                <callerData>
                    <fieldName>caller</fieldName>
                    <classFieldName>class</classFieldName>
                    <methodFieldName>method</methodFieldName>
                    <!--
                     <fileFieldName>file</fileFieldName>
                 -->
                    <lineFieldName>line</lineFieldName>
                </callerData>
                <stackTrace>
                    <throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
                        <maxDepthPerThrowable>100</maxDepthPerThrowable>
                        <rootCauseFirst>true</rootCauseFirst>
                        <inlineHash>true</inlineHash>
                    </throwableConverter>
                </stackTrace>
            </providers>
        </encoder>
    </appender>

配置好了,启动程序查看输出到文件中的日志,中文变成了unicode编码,检查了配置没啥问题,编码都是UTF-8呀~

解决方案

最后尝试了很多种方案,在网上找到一个方案是有效果的


image.png

参考链接

http://www.kailing.pub/article/index/arcid/214.html
https://www.jiweichengzhu.com/article/2f98919d236a4577aab22cd4057fd6fa
https://blog.csdn.net/wang0120000/article/details/105097417

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。