<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

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

      對于logback的模板來說,我們是可以自定義的,同時它也提供了一些公開的常量,比如%level,%thread這些,我們如果希望自定義這些常量,需要實現ClassicConverter抽象類,重寫它的convert方法。

      系統變量

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

      自定義變量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>
      
      • 運行截圖

      自定義PatternLayout

      如果你的自定義classicConvert比較多時,又不想在xml中通過conversionRule一個個注冊,就需要自定義PatternLayout了,接著上面的LevelColorConverter來寫一個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>
      

      通過這個例子,我們也可以自定義輸出服務器的IP地址等,像鏈路追蹤traceId也是通過這種方式進行追加的。

      posted @ 2023-01-28 09:31  張占嶺  閱讀(791)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 欧美丝袜高跟鞋一区二区| 国产精品办公室沙发| 亚洲无人区码二码三码区| 久久精品亚洲中文字幕无码网站| 东京热一区二区三区在线| 一区二区三区不卡国产| 欧美成人午夜在线观看视频| 在线免费播放av观看| 激,情四虎欧美视频图片| 久久99久国产麻精品66| 国产麻传媒精品国产av| 国产自拍在线一区二区三区| 成人年无码av片在线观看| 国产成人不卡一区二区| 国产成AV人片久青草影院| 亚洲熟妇自偷自拍另类| 亚洲精品tv久久久久久久久久| 精品国产一区二区三区大| 免费看婬乱a欧美大片| 亚洲第一成年免费网站| 日韩人妻不卡一区二区三区| 97成人碰碰久久人人超级碰oo| 成人做受120秒试看试看视频| 久久九九久精品国产免费直播 | 欧美成本人视频免费播放| 亚洲肥老太bbw中国熟女| 亚洲国产成人综合自在线| 无码人妻斩一区二区三区| 尤物国产精品福利在线网| 久久综合亚洲色一区二区三区| 成人国产精品免费网站| 精品人妻伦九区久久aaa片69| 精品亚洲男人一区二区三区| 国产不卡一区二区精品| 国产乱色国产精品免费视频 | 国产成人a在线观看视频免费| 国产色悠悠视频在线观看| 精河县| 亚洲精品一区二区二三区| 无套后入极品美女少妇| 亚洲一区二区三区影院|