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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。