中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

springboot~logback按(an)level添加不同的顏色

對于logback的(de)模板來說,我(wo)們是可(ke)以自定義(yi)的(de),同時(shi)它也提供了(le)一些(xie)(xie)公(gong)開的(de)常(chang)量,比如(ru)(ru)%level,%thread這(zhe)些(xie)(xie),我(wo)們如(ru)(ru)果希望自定義(yi)這(zhe)些(xie)(xie)常(chang)量,需要(yao)實(shi)現ClassicConverter抽(chou)象類,重寫它的(de)convert方法。

系統變量

  • %thread 當前線程
  • %d{yyyy-MM-dd HH:mm:ss.SSS} 當前日期時間
  • %level 日志級別
  • %msg 日志主體
  • %n 換行

自定義變量ClassicConverter

ClassicConverter對象負責從ILoggingEvent 提取信息,并產生一個字符串。例如,LoggerConverter,它是處理“% logger”轉換符的轉換器,
它(ta)從ILoggingEvent提取logger 的(de)名字(zi)并作為字(zi)符串返回(hui)。

  • 例如,一個按日志級別實現的顏色轉化器
/**
 * 日志模板:基于日志級別的顏色的轉換器
 */
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>
  • 運行截圖

自定義PatternLayout

如(ru)果你的(de)自(zi)定義classicConvert比較多(duo)時,又不想在xml中(zhong)通過conversionRule一個(ge)個(ge)注冊,就需要自(zi)定義PatternLayout了,接(jie)著上(shang)面的(de)LevelColorConverter來寫一個(ge)PatternLayout.

  • StandardPatternLayout
public class StandardPatternLayout extends PatternLayout {

	static {
		defaultConverterMap.put("color", LevelColorConverter.class.getName());
	}
}
  • 添加對應的配置項,不需要添加conversionRule項,在pattern中,也是可以直接使用定義好的常量的
<layout class="com.lind.common.logger.StandardPatternLayout">
    <pattern>
        %d{yyyy-MM-dd HH:mm:ss.SSS} ${springAppName} %browserType %ip %currentUser [%thread] %color %msg%n
    </pattern>
</layout>

通過(guo)(guo)這(zhe)個例子,我們也可(ke)以自定(ding)義輸出服務器的(de)IP地址(zhi)等(deng),像鏈(lian)路追蹤(zong)traceId也是通過(guo)(guo)這(zhe)種方式進行(xing)追加的(de)。

posted @ 2023-01-28 09:31  張占嶺  閱讀(792)  評論(0)    收藏  舉報