logback传递参数,讲参数拼接到日志文件名上
springBoot配置logback:https://www.cnblogs.com/liufei2/p/16069903.html
指定某个类的日志输出到指定文件中:https://www.cnblogs.com/liufei2/p/16069914.html
下面又来了?
我想传递个参数,根据这个参数,输出到不同的文件中
方法一:环境变量
<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./${project-id}-execution-detail-info.log</file>
<encoder>
<charset>UTF-8</charset>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
这个project-id变量,可以在环境变量中设定,但是一旦设定了,我们就不好改了。
方法二:MDC
详细信息参考:https://logback.qos.ch/manual/mdc.html
<appender name="EXECUTION_LOG" class="ch.qos.logback.classic.sift.SiftingAppender">
<discriminator>
<Key>project-id</Key>
<DefaultValue>default</DefaultValue>
</discriminator>
<sift>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${LOG_HISTORY_PATH}/${project-id}-execution-detail-info.log</file>
<Append>true</Append>
<encoder>
<charset>UTF-8</charset>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level ${PID:-} --- [%t] %logger{50} - %msg%n</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
</sift>
</appender>
测试代码
@GetMapping("/logTest")
public String logTest() {
String projectId = UUID.randomUUID().toString().substring(0, 8);
MDC.put("project-id", projectId);
logger.info("project-id={}, logTest success!", projectId);
return "ok";
}
说明:
- 这里无论单线程还是多线程,都是没问题的
- 如果不指定project-id,我们设置了默认值是default
测试验证
@GetMapping
public String ping() {
logger.info("ping success!");
return "ok";
}
@GetMapping("/logTest")
public String logTest() {
String projectId = UUID.randomUUID().toString().substring(0, 8);
MDC.put("project-id", projectId);
logger.info("project-id={}, logTest success!", projectId);
return "ok";
}
ping方法,我们没有指定project-id
调了三次,三次都写到了project-id=default的文件下
logTest方法,也调三次
产生了三个日志文件,每个日志文件中,只有一次调用的日志记录
这样,我们就可以根据一些标志来收集日志
当然日志的收集方式很多,后面会再次介绍别的方式
参考文档
https://logback.qos.ch/manual/configuration.html#variableSubstitution
https://blog.csdn.net/weixin_34122810/article/details/91915935?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1.pc_relevant_default&spm=1001.2101.3001.4242.2&utm_relevant_index=4