67,513
社区成员
发帖
与我相关
我的任务
分享
package com.pzy.component.logback_demo_01;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.MappingJsonFactory;
import net.logstash.logback.decorate.JsonFactoryDecorator;
public class MyJsonFactoryDecorator implements JsonFactoryDecorator {
@Override
public MappingJsonFactory decorate(MappingJsonFactory factory) {
// 禁用对非ascii码进行escape编码的特性
factory.disable(JsonGenerator.Feature.ESCAPE_NON_ASCII);
return factory;
}
}
二. 修改logback.xml
<appender name="debugFile"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level></level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>/elk/debug.log</file> <!-- 当前的日志文件文件放在 elk文件下,该日志的内容会被filebeat传送到es -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 历史日志会放到 bak 文件下,最多保存7天的历史,最多占用 1G的空间 -->
<fileNamePattern>/bak/debug.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>7</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder
class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<!-- 使用自定义的JsonFactory的装饰器,禁用jackson对非ascii码字符进行escape编码 -->
<jsonFactoryDecorator class="com.pzy.component.logback_demo_01.MyJsonFactoryDecorator"/>
<providers>
<mdc/>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"tags": ["errorlog"],
"project": "myproject",
"timestamp": "%date{\"yyyy-MM-dd'T'HH:mm:ss,SSSZ\"}",
"log_level": "%level",
"thread": "%thread",
"class_name": "%class",
"line_number": "%line",
"message": "%message",
"stack_trace": "%exception{5}",
"req_id": "%X{reqId}",
"elapsed_time": "#asLong{%X{elapsedTime}}"
}
</pattern>
</pattern>
<stackTrace>
<throwableConverter class="net.logstash.logback.stacktrace.ShortenedThrowableConverter">
<maxDepthPerThrowable>2</maxDepthPerThrowable>
<maxLength>2048</maxLength>
<rootCauseFirst>true</rootCauseFirst>
</throwableConverter>
</stackTrace>
</providers>
</encoder>
</appender>
虽然我是在你提出问题的几个月之后回答的,但我希望,如果其他人遇到了这个问题,如果找到了这里,很快的得到解决!