发布时间:2023-01-28 文章分类:编程知识 投稿人:王小丽 字号: 默认 | | 超大 打印

对于logback的模板来说,我们是可以自定义的,同时它也提供了一些公开的常量,比如%level,%thread这些,我们如果希望自定义这些常量,需要实现ClassicConverter抽象类,重写它的convert方法。

系统变量

自定义变量ClassicConverter

ClassicConverter对象负责从ILoggingEvent 提取信息,并产生一个字符串。例如,LoggerConverter,它是处理“% logger”转换符的转换器,
它从ILoggingEvent提取logger 的名字并作为字符串返回。

/**
 * 日志模板:基于日志级别的颜色的转换器
 */
public class LevelColorClassicConverter extends ClassicConverter {
	private static final String END_COLOR = "\u001b[m";
	private static final String ERROR_COLOR = "\u001b[0;31m";
	private static final String WARN_COLOR = "\u001b[0;33m";
	@Override
	public String convert(ILoggingEvent event) {
		StringBuffer sbuf = new StringBuffer();
		sbuf.append(getColor(event.getLevel()));
		String result = String.format("%5s", event.getLevel());
		sbuf.append(result);
		sbuf.append(END_COLOR);
		return sbuf.toString();
	}
	/**
	 * Returns the appropriate characters to change the color for the specified logging
	 * level.
	 */
	private String getColor(Level level) {
		switch (level.toInt()) {
			case Level.ERROR_INT:
				return ERROR_COLOR;
			case Level.WARN_INT:
				return WARN_COLOR;
			default:
				return "";
		}
	}
}
<conversionRule conversionWord="color"  converterClass="com.lind.common.LevelColorClassicConverter" />
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ${springAppName} %ip [%thread] %color %msg%n</pattern>
    </layout>
</appender>