国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

利用ThreadLocal記錄日志

2019-11-18 11:29:26
字體:
來源:轉載
供稿:網友

   在項目中記錄日志是必須的,但是往往在記錄日志的時候都是通過logger.debug("...")來記錄的,程序一邊運行一邊記錄日志,尤其在多線程或者Web應用中,同一時間可能有不同的日志記錄到同一個文件中去,當出現錯誤的時候就不能確定在那些信息是你想關心的.因此假如我們在一個程序的開始的地方開始記錄日志,但是這個日志不記錄到日志文件中,而是保存在一個ThreadLocal中,在出錯的時候就可以將這些日志全部輸出到日志文件中去,就能方便查找了.
代碼如下:
 
 
import java.util.ArrayList;
import java.util.List;
public class DebugLogger {
 /**
  * @param args
  */
 public static void main(String[] args) {
  //測試使用,正式使用的時候可以在一個方法的開始new一個DebugLogger 
  DebugLogger logger = new DebugLogger();
  //模擬需要記錄的十次日志信息,一次記錄到DebugLogger里面去了
  for(int i = 0;i<10;i++){
  //在需要記錄日志的地方改為下面的代碼
   logger.put("Log info " + i);
  }
  
 
 //到了方法結束或者出現異常的時候,將剛才記錄的日志取出來
  String[] strings = logger.get();
 //將取出來的日志一次記錄到日志文件里去
  for (int i = 0; i < strings.length; i++) {
   System.out.PRintln(strings[i]);
  }
  
 //請空DebugLogger里記錄的日志內容
  logger.clear();
  {
   String[] strings1 = logger.get();
   for (int i = 0; i < strings1.length; i++) {
    System.out.println(strings1[i]);
   }
   
  }
 }
 
 //內部靜態類,繼續至ThreadLocal
 private static class ThreadLocalList extends ThreadLocal {
 // 在調用get()方法的時候返回一個ArrayList對象
  public Object initialValue() {
   return new ArrayList();
  }
  //將保存在ThreadLocal中的List返回
  public List getList() {
   return (List) super.get();
  }
 }
 
 private ThreadLocalList list = new ThreadLocalList();
 private static String[] stringArray = new String[0];
 //清空記錄的日志
 public void clear() {
  list.getList().clear();
 }
 //將需要記錄的日志內容保存下來
 public void put(String text) {
  list.getList().add(text);
 }
 //返回需要記錄的日志
 public String[] get() {
  return (String[]) list.getList().toArray(stringArray);
 }
}

 
在代碼中,您可以調用 DebugLogger.put() 來保存您的程序正在做什么的信息,而且,稍后假如有必要(例如發生了一個錯誤),您能夠輕易地檢索與某個特定線程相關的調試信息。 與簡單地把所有信息轉儲到一個日志文件,然后努力找出哪個日志記錄來自哪個線程(還要擔心線程爭用日志紀錄對象)相比,這種技術簡便得多,也有效得多。 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邯郸县| 桦南县| 浙江省| 德惠市| 扬中市| 格尔木市| 苗栗县| 宝应县| 铁力市| 乌什县| 柞水县| 牙克石市| 东城区| 微山县| 璧山县| 祁连县| 和平县| 清水县| 新竹市| 上饶市| 拉萨市| 永康市| 昌吉市| 宁武县| 孝义市| 诏安县| 社旗县| 呈贡县| 北宁市| 大庆市| 邹城市| 合肥市| 久治县| 太仆寺旗| 桦南县| 揭东县| 中西区| 论坛| 清河县| 凌源市| 剑川县|