Log4j或者Logback的NDC和MDC功能

log4j用於存儲上下文信息(context information)的兩個重要的類NDC(Nested Diagnostic Context)和MDC(Mapped Diagnositc Context).app

NDC採用棧的機制存儲上下文,是線程獨立的,子線程會從父線程拷貝上下文。spa

開始調用線程

NDC.push(message);orm

刪除棧頂消息內存

NDC.pop();ci

清除所有的消息,必須再線程退出前顯示的調用,不然會致使內存溢出。rem

NDC.remove();get

輸出模板:log4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ssS}] [%x] : %m%n  it



MDC採用Map的方式存儲上下文,是線程獨立的,子線程會從父線程拷貝上下文。io

MDC.put(key, value); 

MDC.get(key); 

MDC.remove(key);

輸出模板:log4j.appender.consoleAppender.layout.ConversionPattern = %-4r [%t] %5p %c %x - %m - %X{key}%n


  • Use %X Map中所有數據

  • Use %X{key} 指定輸出Map中的key的值

  • Use %x 輸出Stack中的所有內容

相關文章
相關標籤/搜索