作者:虹彩戳穿_525 | 来源:互联网 | 2023-06-04 08:58
原标题:spring boot使用logback日志级别打印控制 因为公司业务需要,需要把性能日志和业务日志分开打印,用elk收集处理,所以需要对不同的业务的日志,打印到不同文件。使用的是sprin
原标题:spring boot使用logback日志级别打印控制
因为公司业务需要,需要把性能日志和业务日志分开打印,用elk收集处理,所以需要对不同的业务的日志,打印到不同文件。
使用的是spring boot自带的logback。
首先在yml文件配置logback.xml文件,默认会从resources下找logback.xml文件,找不到会从yml文件中找logging.config下的指定文件。
logging:
level: DEBUG
config: classpath:logback.xml
文章来源站点https://www.yii666.com/logback.xml是logback的配置文件,可以设置打印文件的路径,格式,过滤打印的级别等等,我们来看一下logback.xml文件。
value="%d{yyyy-MM-dd'T'HH:mm:ss.SSS} %p app_test %t %logger{50} [line:%L %msg]%n">
${LOG_HOME}/${APPNAME}/performanceLog/${APPNAME}.log
${LOG_HOME}/${APPNAME}/performanceLog/${APPNAME}-%d{yyyyMMdd}.%i.log
文章来源地址38422.htmlore.rolling.SizeAndTimeBasedFNATP">
50MB
true
%d{yyyy/MM/dd' 'HH:mm:ss.SSS} %X{req.requestId}[line:%L %msg] %n
utf-8
<www.yii666.comlevel>info
ACCEPT
DENY
${LOG_HOME}/${APPNAME}/bizLog/${APPNAME}.log
${LOG_HOME}/${APPNAME}/bizLog/${APPNAME}-%d{yyyy-MM-dd}.%i.log
50MB
true
%d{yyyy/MM/dd' 'HH:mm:ss.SSS} %X{req.requestId}[line:%L %msg] %n
utf-8
info
error
${MDC_LOG_PATTERN}
utf-8
all
:根标签,所有标签都在里面。
:属性标签,设置变量,name为变量名,value为值,可以使用${变量名}方式使用。
:当一个记录日志的事件被发起时,logback 会将这个事件发送给 appender,经常使用的有ch.qos.logback.core.ConsoleAppender和ch.qos.logback.core.rolling.RollingFileAppender,ConsoleAppender是打印到控制台的,RollingFileAppender是滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。
:在中使用,记录的日志文件的路径及文件名。
:分包策略,就是前一天日志的存储文件名,大小,压缩格式,存放天数。ch.qos.logback.core.rolling.TimeBasedRollingPolicy:实现的是基于时间的分包策略,分包间隔是根据中指定的事件最小单位。
:存放日志的路径和名称。
:每个文件最大文件。
:日志文件的格式和编码。
:日志编码格式。
:设置日志打印格式。
:日志过滤器。
:日志过滤级别,TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF。
:使用LoggerFactory.getLogger("performanceLogger") 使用这个logger。
:根loger。只有一个level属性,应为已经被命名为"root"。
%d{yyyy/MM/dd' 'HH:mm:ss.SSS}:是对时间格式化,2018/12/19 17:31:17.126
%X{ req.requestId}:在MDC类中添加req.requestId参数,即可在logback.xml中使用,后面讲MDC类。
%p:打印出日志级别信息,如:INFO,ERROR等错误级别。
%t:是打印出线程或者哪个类打印出的日志。
%L:打印出当前行数。
%msg:就是日志信息啦。就是logger.info("xxx"),xxx就是%msg。
%n:换行。
MDC
是为了便于我们诊断线上问题而出现的方法工具类。
public class MDC {
//Put a context value as identified by key
//into the current thread's context map.
public static void put(String key, String val);
//Get the context identified by the key parameter.
public static String get(String key);
文章来源地址38422.html
//Remove the context identified by the key parameter.
public static void remove(String key);
//Clear all entries in the MDC.
public static void clear();
}
基本使用
MDC.put("reqwww.yii666.com.requestId", uuid);
MDC.put("req.remoteHost", request.getRemoteHost());
%d{yyyy/MM/dd' 'HH:mm:ss.SSS} %X{req.requestId}[line:%L %msg] %n
在logback.xml中可使用%X{req.requestId},得到uuid。
打印到不同文件
private final static Logger performanceLogger = LoggerFactory.getLogger("performanceLogger");
这样就可以使用logback.xml里里的performanceLogger,performanceLogger引用的是performanceAppender。
private static final Logger logger = LoggerFactory.getLogger(Class.class);
这样使用的就是logback.xml里的标签里的bizAppender。
这样就基本实现了分不同业务逻辑打印到不同文件了。
来源于:spring boot使用logback日志级别打印控制