亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java異步寫日志到文件中實現代碼

2019-11-26 12:30:10
字體:
來源:轉載
供稿:網友

java異步寫日志到文件中詳解

實現代碼:

package com.tydic.ESUtil;  import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.Properties;  public class LogWriter { // 日志的配置文件   public static final String LOG_CONFIGFILE_NAME = "log.properties";   // 日志文件名在配置文件中的標簽   public static final String LOGFILE_TAG_NAME = "logfile";      // 默認的日志文件的路徑和文件名稱   private final String DEFAULT_LOG_FILE_NAME = "./logtext.log";   // 該類的唯一的實例   private static LogWriter logWriter;   // 文件輸出流   private PrintWriter writer;    // 日志文件名   private String logFileName;    /**    * 默認構造函數    */   private LogWriter() throws LogException{     this.init();   }   private LogWriter(String fileName) throws LogException{     this.logFileName = fileName;     this.init();   }   /**    * 獲取LogWriter的唯一實例。    * @return    * @throws LogException    */   public synchronized static LogWriter getLogWriter()throws LogException{     if (logWriter == null){       logWriter = new LogWriter();     }     return logWriter;   }   public synchronized static LogWriter getLogWriter(String logFileName)throws LogException{     if (logWriter == null){       logWriter = new LogWriter(logFileName);     }     return logWriter;   }    /**    * 往日志文件中寫一條日志信息    * 為了防止多線程同時操作(寫)日志文件,造成文件”死鎖”。使用synchronized關鍵字    * @param logMsg  日志消息    */   public synchronized void log(String logMsg) {     this.writer.println(new java.util.Date() + ": " + logMsg);   }   /**    * 往日志文件中寫一條異常信息    * 使用synchronized關鍵字。    * @param ex  待寫入的異常    */   public synchronized void log(Exception ex) {     writer.println(new java.util.Date() + ": ");     ex.printStackTrace(writer);   }    /**    * 初始化LogWriter    * @throws LogException    */   private void init() throws LogException{     //如果用戶沒有在參數中指定日志文件名,則從配置文件中獲取。     if (this.logFileName == null){       this.logFileName = this.getLogFileNameFromConfigFile();       //如果配置文件不存在或者也沒有指定日志文件名,則用默認的日志文件名。       if (this.logFileName == null){         this.logFileName = DEFAULT_LOG_FILE_NAME;       }     }     File logFile = new File(this.logFileName);     try {       // 其中的FileWriter()中的第二個參數的含義是:是否在文件中追加內容       // PrintWriter()中的第二個參數的含義是:自動將數據flush到文件中       writer = new PrintWriter(new FileWriter(logFile, true), true);       System.out.println("日志文件的位置:" + logFile.getAbsolutePath());     } catch (IOException ex) {       String errmsg = "無法打開日志文件:" + logFile.getAbsolutePath();       // System.out.println(errmsg);       throw new LogException(errmsg, ex);     }   }   /**    * 從配置文件中取日志文件名    * @return    */   private String getLogFileNameFromConfigFile() {      try {        Properties pro = new Properties();        //在類的當前位置,查找屬性配置文件log.properties        InputStream fin = getClass().getResourceAsStream(LOG_CONFIGFILE_NAME);        if (fin != null){         pro.load(fin);//載入配置文件         fin.close();          return pro.getProperty(LOGFILE_TAG_NAME);       } else {         System.err.println("無法打開屬性配置文件: log.properties" );        }     }catch (IOException ex) {        System.err.println("無法打開屬性配置文件: log.properties" );      }     return null;   }   //關閉LogWriter   public void close() {     logWriter = null;     if (writer != null){       writer.close();     }   }    public static void main(String[] args) {     LogWriter logger = null;     try {       String fileName = "d:/temp/logger.log";       logger = LogWriter.getLogWriter(fileName); //     logger.log("First log!"); //     logger.log("第二個日志信息"); //     logger.log("Third log"); //     logger.log("第四個日志信息");       String content="tableaA|device_number|13701010";       StringBuffer sb=new StringBuffer();       for(int i=0;i<1000000;i++){         sb.append(content).append(i).append(";/n");       }       content=sb.toString();       long startTime=System.currentTimeMillis();       logger.log(content);       long endTime=System.currentTimeMillis();       System.out.println("總消耗時間:"+(endTime-startTime));       logger.close(); //     ReadFromFile.readFileByLines(fileName);     } catch (LogException e) {       e.printStackTrace();     }   } } 

 

package com.tydic.ESUtil;  public class AychWriter extends Thread {   private String content;   public AychWriter(String content){     this.content=content;   }   @Override   public void run(){     System.out.println("開始執行run()");     LogWriter logger = null;     String fileName = "d:/temp/logger.log";     long startTime=System.currentTimeMillis();     try {       logger = LogWriter.getLogWriter(fileName);       logger.log(this.content);     } catch (LogException e1) {       // TODO Auto-generated catch block       e1.printStackTrace();     }      long endTime=System.currentTimeMillis();     System.out.println("總消耗時間:"+(endTime-startTime));   } } 

測試類:

package com.tydic.ESUtil;  import java.io.FileWriter; import java.io.IOException;  import org.junit.Test;  public class test_test {   /**    * 同步向指定文件尾部寫入字符串    */ public void testAppendMethodB(String fileName,String content) throws IOException{     try {       //打開一個寫文件器,構造函數中的第二個參數true表示以追加形式寫文件       FileWriter writer = new FileWriter(fileName, true);       writer.write(content);       writer.close();     } catch (IOException e) {       e.printStackTrace();     }     }  /**  *調用上面同步寫方法  */   @Test   public void testWriteTOFile() throws IOException{     String fileName = "d://test.txt";     String content="tableaA|device_number|13701010";     StringBuffer sb=new StringBuffer();     for(int i=0;i<100000;i++){       sb.append(content).append(i).append(";/n");     }     content=sb.toString();     long startTime=System.currentTimeMillis();     testAppendMethodB(fileName,content);     long endTime=System.currentTimeMillis();     System.out.println("總消耗時間:"+(endTime-startTime));   }   /**    * 異步調用寫方法    * @throws IOException    * @throws InterruptedException    */   @Test   public void testAsyncWriteTOFile() throws IOException, InterruptedException{     String fileName = "d://test.txt";     String content="tableaA|device_number|13701010";     StringBuffer sb=new StringBuffer();     for(int i=0;i<100000;i++){       sb.append(content).append(i).append(";/n");     }     content=sb.toString();     System.out.println("start write...");     new AychWriter(content).start();     System.out.println("write over...");     Thread.sleep(30000); //重要,如果主線程掛了,調用線程也停止了     System.out.println("main Thread over");   }    } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久999国产| 欧美成人免费视频| 日韩动漫免费观看电视剧高清| 97在线观看免费高清| 亚洲成人av在线| 欧美性受xxxx黑人猛交| 色99之美女主播在线视频| 日韩视频―中文字幕| 尤物精品国产第一福利三区| 日韩在线高清视频| 国产精品高清网站| 欧美激情亚洲自拍| 亚洲成人网av| 欧美日韩国产页| 日韩成人中文电影| 色偷偷亚洲男人天堂| 亚洲自拍偷拍视频| 亚洲男人av在线| 日韩av中文字幕在线免费观看| 91精品国产自产91精品| 人人做人人澡人人爽欧美| 国产欧美日韩免费| 中文字幕在线看视频国产欧美在线看完整| 欧洲成人免费视频| 最近2019免费中文字幕视频三| 国语自产偷拍精品视频偷| 亚洲第一精品夜夜躁人人躁| 国产精品极品美女粉嫩高清在线| 69视频在线播放| 欧日韩不卡在线视频| 亚洲第一二三四五区| 黑人巨大精品欧美一区二区免费| 97在线观看免费| 日韩一区二区福利| 亚洲韩国日本中文字幕| 91精品久久久久久久久不口人| 欧美性极品xxxx娇小| 成人福利网站在线观看| 国产精品www网站| 欧美成人精品不卡视频在线观看| 狠狠色狠狠色综合日日五| 青青草精品毛片| 国产精品免费观看在线| 久久99精品视频一区97| 亚洲有声小说3d| 亚洲国产天堂久久综合| 久久久久久成人精品| 亚洲男人天堂2019| 亚洲综合在线做性| 成人信息集中地欧美| 正在播放亚洲1区| 日本一区二区三区四区视频| 97视频在线观看亚洲| 欧美亚州一区二区三区| 中日韩美女免费视频网址在线观看| 亚洲香蕉av在线一区二区三区| 在线观看不卡av| 91精品久久久久久久久久| 97在线免费观看| 热久久美女精品天天吊色| 日韩欧美亚洲综合| 亚洲国产精久久久久久| 欧美高清无遮挡| 一本色道久久综合亚洲精品小说| 亚洲国产婷婷香蕉久久久久久| 18性欧美xxxⅹ性满足| 欧美极品少妇全裸体| 精品久久香蕉国产线看观看亚洲| 成人国产在线激情| 欧美寡妇偷汉性猛交| 欧美一区二区三区精品电影| 欧美成人合集magnet| 国自产精品手机在线观看视频| 成人字幕网zmw| 日韩欧美在线第一页| 不用播放器成人网| 亚洲日本欧美日韩高观看| 亚洲国产精品va在线看黑人| 国产精品99久久久久久人| 欧美综合在线观看| 国产精品久久久久久中文字| 国产亚洲欧美日韩一区二区| 国产亚洲人成网站在线观看| 欧美激情精品久久久久久变态| 国产精品高潮呻吟视频| 超碰日本道色综合久久综合| 久久在线视频在线| 成人xxxx视频| 国产精品扒开腿做爽爽爽视频| 亚洲一级片在线看| 亚洲色图18p| 色琪琪综合男人的天堂aⅴ视频| 91夜夜揉人人捏人人添红杏| 日韩中文字幕av| 精品一区二区亚洲| 久久视频在线免费观看| 欧美精品亚州精品| 欧洲精品毛片网站| 亚洲一区第一页| 国产精品福利片| 欧洲精品毛片网站| 91精品国产九九九久久久亚洲| 日韩电影网在线| 国内精品一区二区三区| 永久免费毛片在线播放不卡| 国产精品男人的天堂| 2019中文字幕免费视频| 久久久精品久久| 欧美视频第一页| 久久久久久久久国产精品| 色午夜这里只有精品| 国产精品日韩精品| 欧美视频在线看| 亚洲欧美日本伦理| 日韩欧美精品网站| 欧美影院在线播放| 欧美视频一二三| 亚洲欧美日韩天堂一区二区| 欧美日韩国产999| 亚洲综合在线播放| 欧美在线观看网址综合| 亚洲欧美国产高清va在线播| 国产经典一区二区| 欧美激情国产高清| 日韩欧美国产视频| 91久久嫩草影院一区二区| 91av在线播放视频| 欧美黄网免费在线观看| 欧美日韩免费在线观看| 亚洲人av在线影院| 色哟哟网站入口亚洲精品| 91夜夜揉人人捏人人添红杏| 国产精品久久久久久久久久久久久| 91网站在线看| 欧美日韩一区二区免费在线观看| 久久久久久国产| 国产精品亚洲自拍| 91在线观看免费观看| 久久精品视频中文字幕| 亚洲欧洲日本专区| 亚洲va久久久噜噜噜| 久久精品国产欧美激情| 91精品国产自产在线观看永久| 国产精品丝袜一区二区三区| 亚洲国产日韩欧美在线动漫| 91色p视频在线| 国产成人亚洲精品| 日韩电影第一页| 97久久超碰福利国产精品…| 69影院欧美专区视频| 久久精品久久久久久国产 免费| 成人性生交大片免费看视频直播| 欧美成人免费视频| 精品无码久久久久久国产| 久久99视频免费| 91精品久久久久久久久久久久久| 亚洲一区二区三区sesese| 久久久久久久一区二区三区| 91在线中文字幕| 久久视频免费在线播放| 91精品在线播放| 在线观看欧美日韩| 欧美日韩国产精品专区| 2018中文字幕一区二区三区|