å¨ä»£ç ä¸ç¼åæ¥å¿è®°å½è¯å¥ä½¿ç¨SLF4Jç主è¦å¨æºæ¯è®©ç¨åºç¬ç«äºä»»ä½ç¹å®çæ¥å¿è®°å½åºï¼è¿äºæ¥å¿è®°å½åºå¯è½éè¦ä¸ç°å¨é
ç½®ä¸åçé
ç½®ï¼èä¸è¿ä¼å¼å
¥æ´å¤ä»¤äººå¤´ç¼çç»´æ¤é®é¢ãç¶èé¤äºè¿ä¸ªä¹å¤ï¼SLF4J APIè¿æä¸ä¸ªè®©æ¨ä½¿ç¨SLF4Jèä¸æ¯ç¨é¿ææå
´è¶£ç Log4j æ´è®©äººä¿¡æçåè½ï¼å°±æ¯å ä½ç¬¦åè½ï¼å¨ä»£ç ä¸ç¨{}æ¥è¡¨ç¤ºãå ä½ç¬¦åè½ä¸ Stringçformat()æ¹æ³ä¸ç%sé常ç¸ä¼¼ï¼å 为å®å¨è¿è¡æ¶å»ææåææä¾ççæ£çå符串ãè¿ä¸ä»
缩åäºä»£ç ä¸ç许å¤å符串è¿æ¥ï¼èä¸åå°äºå建String对象æéè¦çèµæºãå³ä¾¿å¨ç产ç¯å¢æ¥å¿çº§å«æ¯å¦DEBUGåINFO级å«çå符串è¿æ¥å¯è½ä¸éè¦çæ¶åï¼ä»ç¶å¯ä»¥èµ·å°åæ ·çææãç±äºå符串æ¯ä¸å¯æ´æ¹ç ï¼èå®ä»¬æ¯å¨åç¬¦ä¸²æ± ä¸å建çï¼è¿äºå符串使ç¨äºå å
å ï¼å½åºç¨å¨ç产ç¯å¢ä¸è¿è¡å¨ERROR级å«çæ¶åï¼å符串å¨å¤§å¤æ°æ
åµä¸å°±ä¸æ¯å¿
é¡»çï¼æ¯å¦DEBUGè¯å¥éçå符串就ä¸æ¯å¿
é¡»çãéè¿ä½¿ç¨SLF4Jå¯ä»¥å»¶è¿å符串çå建å°è¿è¡æ¶å»ï¼è¿æå³çåªæå¨éè¦å符串çæ¶åæå建å®ãå¦æå·²ç»ä½¿ç¨äºlog4jï¼é£ä¹æ¨å·²ç»çææè°è¯è¯å¥æ¾å
¥if()æ¡ä»¶å
çå·¥ä½åºæ¯ï¼èSLF4Jå ä½ç¬¦åè½æ¯log4jæ´éåè¿ç§åºæ¯ã
ä¸é¢æ¯ç¨Log4jæ¶çåæ³ï¼å½ç¶è¿å¹¶ä¸å¥½ç©èä¸å®å¢å äºä¸å¿
è¦çå
¬å¼åç代ç ï¼åå°äºä»£ç çå¯è¯»æ§ã
1
2
3
if (logger.isDebugEnabled()) {
logger.debug("Processing trade with id: " + id + " symbol: " + symbol);
}
å¦æ使ç¨SLF4Jï¼å¯ä»¥ä½¿ç¨æ´ç®æ´çæ ¼å¼è¾¾å°åæ ·çææï¼å¦ä¸:
logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
å¨SLF4Jä¸ï¼æ们ä¸éè¦è¿è¡å符串æ¼æ¥ï¼ä¸ä¼å¯¼è´ä½¿ç¨ä¸´æ¶å符串带æ¥çæ¶èãç¸åï¼æ们使ç¨å¸¦å ä½ç¬¦ç模æ¿æ¶æ¯æ¥è®°å½æ¥å¿ä¿¡æ¯ï¼å¹¶æä¾å®é
å¼ä½ä¸ºåæ°ãå¨ä¸ºæ¥å¿ä¿¡æ¯äº§çæç»çå符串ä¹åï¼è¯¥æ¹æ³ä¼æ£æ¥æ¯å¦å¼å¯äºç¹å®çæ¥å¿çº§å«ï¼è¿ä¸ä»
éä½äºå
åå ç¨ï¼èä¸é¢å
åå°äºæ§è¡å符串æ¼æ¥ææ¶èçCPUæ¶é´ãä¸é¢çSLF4Jæ¥å¿æ¹æ³ç代ç ï¼æ¥èªäºslf4j-log4j12-1.6.1.jarå
éçLog4jçéé
å¨ç±»
Log4jLoggerAdapter.
public void debug(String format, Object arg1, Object arg2) { if (logger.isDebugEnabled()) { FormattingTuple ft = MessageFormatter.format(format, arg1, arg2); logger.log(FQCN, Level.DEBUG, ft.getMessage(), ft.getThrowable()); }}
æ¥å¿ä¹ä¼å¯¹åºç¨ç¨åºçæ§è½äº§çååï¼å¤§å®¶é常宣æ¬çæ¯åªå¨ç产ç¯å¢ä¸æ强å¶è®°å½æ¥å¿ã
温馨提示:内容为网友见解,仅供参考