Java 使用转义序列打印双引号的logback
我使用以下代码来打印输出中应该包含双引号的日志。 使用转义序列打印双引号,但logback会将转义序列与双引号一起打印 代码:Java 使用转义序列打印双引号的logback,java,logback,slf4j,Java,Logback,Slf4j,我使用以下代码来打印输出中应该包含双引号的日志。 使用转义序列打印双引号,但logback会将转义序列与双引号一起打印 代码: private static final Logger logger = LoggerFactory.getLogger(S3FileWriter.class.getName()); logger.error("\"hello\"") 输出 \"hello\" "hello"
private static final Logger logger = LoggerFactory.getLogger(S3FileWriter.class.getName());
logger.error("\"hello\"")
输出
\"hello\"
"hello"
所需输出
\"hello\"
"hello"
配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="component" value="${COMPONENT}"/>
<property name="componentVersion" value="${COMPONENT_VERSION}"/>
<property name="logLevel" value="${LOG_LEVEL}"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
{
"timestamp": "%date{\"yyyy-MM-dd'T'HH:mm:ss,SSSZ\"}",
"message": "%message",
"component":"${component}",
"component_version":"${componentVersion}",
"machine":"${HOSTNAME}",
"request_id":
{
"trace_id":"%X{X-B3-TraceId}",
"span_id":"%X{X-B3-SpanId}",
"parent_span_id":"%X{X-B3-ParentSpanId}"
},
"data":
{
"package":"%logger", "threadId":"%thread"
},
"exception":"%exception{short}",
"stack":"%exception",
"level":"%level"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
<root level="${logLevel:-INFO}">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
{
“时间戳”:“%date{\”yyyy-MM-dd'HH:MM:ss,SSSZ\”,
“消息”:“%message”,
“组件”:“${component}”,
“组件版本”:“${componentVersion}”,
“计算机”:“${HOSTNAME}”,
“请求id”:
{
“跟踪id”:“%X{X-B3-TraceId}”,
“span_id”:“%X{X-B3-SpanId}”,
父项span\u id:“%X{X-B3-ParentSpanId}”
},
“数据”:
{
包“:“%logger”,“threadId”:“%thread”
},
“异常”:“%exception{short}”,
“堆栈”:“%exception”,
“级别”:“%level”
}
自动添加“额外”转义序列,以确保要添加的内容在生成的JSON结构中有效。您已将模式定义为
{
...
“消息”:“%message”
...
}
因此,当您将字符串内容“hello”
作为七个字符长的字符串(包括引号)时,必须按如下方式添加:
{
...
“消息”:“你好”
...
}
字段消息
将具有(七个字符长字符串)值“hello”
。如果添加不带引号的内容,将破坏整个JSON结构:
{
...
消息:“您好”
…^---字符串结束
^---一些无效的JSON令牌
^---字符串开始
^---弦端
}
请将您的问题包括在内,包括logback配置。@Progman添加的配置部分看起来不错。类LoggingEventCompositeJsonEncoder
正确地编码了json中的字符串。您只需要从记录器中删除引号。error()