|
|
@@ -12,7 +12,14 @@
|
|
|
</root>
|
|
|
堆栈:stack_trace 字段完整不截断(6.6 默认 ExtendedThrowableProxyConverter,显式声明锁死,
|
|
|
升级 encoder 7.4+ 时其默认会变为 ShortenedThrowableConverter 截断堆栈);
|
|
|
- 另输出 stack_frames 帧数组便于 SLS 按帧检索。 -->
|
|
|
+ 另输出 stack_frames 帧数组便于 SLS 按帧检索。
|
|
|
+ 调用位置:CallerDataJsonProvider 输出 caller_class_name / caller_method_name /
|
|
|
+ caller_file_name / caller_line_number(日志语句所在源文件与行号,便于从 SLS 回溯到代码);
|
|
|
+ 因 debug/error 文本 appender 已含 %file:%line,caller data 本就被计算,无额外开销。
|
|
|
+ 物理文件:customFields 输出 log_file(本行写入时的活动文件完整路径)。
|
|
|
+ 滚动归档后定位规则:日志按 @timestamp 的日期归档到
|
|
|
+ {log.path}/json/{yyyy-MM}/{log_file 文件名去掉 .log}.{yyyy-MM-dd}.{i}.log.gz
|
|
|
+ (同一天仅一个文件时 i=0;单日超 50MB 会有多个 i,按时间戳在归档内检索)。 -->
|
|
|
<appender name="debug-json" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
|
<file>${log.path}/json/debug.log</file>
|
|
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
|
@@ -25,11 +32,13 @@
|
|
|
<append>true</append>
|
|
|
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
|
|
|
<throwableConverter class="ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter"/>
|
|
|
+ <provider class="net.logstash.logback.composite.loggingevent.CallerDataJsonProvider"/>
|
|
|
<provider class="net.yyc.common.log.logback.StackTraceFramesJsonProvider"/>
|
|
|
<fieldNames>
|
|
|
<version>[ignore]</version>
|
|
|
<levelValue>[ignore]</levelValue>
|
|
|
</fieldNames>
|
|
|
+ <customFields>{"log_file":"${log.path}/json/debug.log"}</customFields>
|
|
|
</encoder>
|
|
|
</appender>
|
|
|
|
|
|
@@ -45,11 +54,13 @@
|
|
|
<append>true</append>
|
|
|
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
|
|
|
<throwableConverter class="ch.qos.logback.classic.pattern.ExtendedThrowableProxyConverter"/>
|
|
|
+ <provider class="net.logstash.logback.composite.loggingevent.CallerDataJsonProvider"/>
|
|
|
<provider class="net.yyc.common.log.logback.StackTraceFramesJsonProvider"/>
|
|
|
<fieldNames>
|
|
|
<version>[ignore]</version>
|
|
|
<levelValue>[ignore]</levelValue>
|
|
|
</fieldNames>
|
|
|
+ <customFields>{"log_file":"${log.path}/json/error.log"}</customFields>
|
|
|
</encoder>
|
|
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
|
|
<level>ERROR</level>
|