请问:如何实现文件日志功能?要求每天换一个文件。文件名以日期区分
生活随笔
收集整理的這篇文章主要介紹了
请问:如何实现文件日志功能?要求每天换一个文件。文件名以日期区分
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| | #1 得分:0 回復于: 2004-06-22 17:24:13 使用一個單獨的類封裝日志記錄,在該類中記錄當前使用的文件名,每次記日志時獲取一下系統時間,與文件名匹配一下,發現日期不同則新開文件。 下面是我利用jdk1.4附帶的logging包寫的日志記錄類: package?olcom.mp.opermanage.lom.term; import?java.util.logging.*; import?olcom.mp.opermanage.util.DateFormator; import?java.io.*; import?java.util.Date; /** ?*?記日志 ?*?<p>Title:?</p> ?*?<p>Description:?</p> ?*?<p>Copyright:?Copyright?(c)?2004</p> ?*?<p>Company:?</p> ?*?@author?not?attributable ?*?@version?1.0 ?*/ public?class?TermLogging?{ ????//logger ????private?Logger?logger; ????//輸出處理 ????private?FileHandler?currentHandler; ????//使用的日期 ????private?String?strCurrDate; ????//輸出級別 ????private?Level?level; ????//日志路徑 ????private?String?logPath?=?"term_log"; ????/** ?????*?構造函數 ?????*/ ????public?TermLogging(){ ????????logger??=?Logger.getLogger("Term"); ????????logger.setUseParentHandlers(false); ????????strCurrDate?=?DateFormator.parseLongToStr(System.currentTimeMillis(),"yyyyMMdd"); ????????try?{ ????????????createDir(); ????????????currentHandler?=?new?FileHandler(?getFileName(),true?); ????????????logger.addHandler(currentHandler); ????????????currentHandler.setFormatter(new?TermFormatter()); ????????}?catch?(IOException?e)?{ ????????????System.out.println("[OperManage]Log?exception:"?+?e.getMessage()?); ????????} ????} ????/** ?????*?獲取日志文件名 ?????*?@return ?????*/ ????private?String?getFileName(){ ????????return?logPath?+?"/term"?+?strCurrDate?+?".log"; ????} ????/** ?????*?創建日志目錄 ?????*/ ????private?void?createDir()?{ ????????File?fdir?=?new?File(logPath); ????????if?(!fdir.exists())?{ ????????????System.out.println("[OperManage]Create?Term?log?dir"); ????????????if?(fdir.mkdir()?==?false)?{ ????????????????System.out.println("[OperManage]Log?dir?create?fail"); ????????????} ????????} ????} ????/** ?????*?記日志 ?????*?@param?info ?????*/ ????public?void?log(String?info)?{ ????????//獲取記日志時的日期 ????????String?strLogDate?=?DateFormator.parseLongToStr(System.currentTimeMillis(),"yyyyMMdd"); ????????//如果日期和當前用的不一致,生成新的文件 ????????if?(?!strLogDate.equals(strCurrDate)?)?{ ????????????strCurrDate?=?strLogDate; ????????????logger.removeHandler(currentHandler); ????????????try?{ ????????????????currentHandler?=?new?FileHandler(?getFileName(),true?); ????????????????logger.addHandler(currentHandler); ????????????????currentHandler.setFormatter(new?TermFormatter()); ????????????}?catch?(IOException?e)?{ ????????????????System.out.println("[OperManage]Log?exception:"?+?e.getMessage()?); ????????????} ????????} ????????//記錄 ????????logger.log(OpLevel.TERM,info); ????} } /** ?*?自定義消息級別 ?*?<p>Title:?</p> ?*?<p>Description:?</p> ?*?<p>Copyright:?Copyright?(c)?2004</p> ?*?<p>Company:?</p> ?*?@author?not?attributable ?*?@version?1.0 ?*/ class?OpLevel?extends?Level?{ ????//定義自己的消息級別TERM ????public?static?final?Level?TERM?=?new?OpLevel("TERM",?Level.INFO.intValue()?+?50); ????public?OpLevel(String?ln,?int?v)?{ ????????super(ln,?v); ????} } /** ?*?格式化日志記錄 ?*?<p>Title:?</p> ?*?<p>Description:?</p> ?*?<p>Copyright:?Copyright?(c)?2004</p> ?*?<p>Company:?</p> ?*?@author?not?attributable ?*?@version?1.0 ?*/ class?TermFormatter?extends?Formatter?{ ????public?String?format(LogRecord?rec)?{ ????????String?dem?=?"\t"; ????????StringBuffer?buf?=?new?StringBuffer(1000); ????????//作為消息ID ????????buf.append(rec.getMillis()); ????????buf.append(dem); ????????//時間 ????????String?time?=?DateFormator.parseLongToStr(System.currentTimeMillis(),"yyyyMMddHHmmss"); ????????buf.append(time); ????????buf.append(dem); ????????//消息級別 ????????buf.append(rec.getLevel()); ????????buf.append(dem); ????????//格式化日志記錄數據 ????????buf.append(formatMessage(rec)); ????????//換行 ????????buf.append('\n'); ????????return?buf.toString(); ????} } |
總結
以上是生活随笔為你收集整理的请问:如何实现文件日志功能?要求每天换一个文件。文件名以日期区分的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java怎么把system.out的东西
- 下一篇: MFC非模态对话框实例