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中的所有內容