File 與 Log #1----ASP.NET的檔案與I/O Stream(為系統記錄Log檔)

檔案的應用,在程式設計上一直是個重點。雖然有了資料庫幫我們紀錄資料,但有些小資料不需要勞師動眾、也不必存放太久,如果用一個文字檔來記錄,反而更簡單。

舉例來說,尚未上線的系統、或是有些功能繁雜的程式要撰寫。我們就可以利用檔案的功能來做紀錄。一邊測試一邊記錄這些程式在各階段的運作狀況,每個階段成功與否都可以直接寫入文字檔裡面,不需要跟資料庫搶資源、搶連線。畢竟小檔案I/O的速度,一般來說都快過資料庫。





本文範例已經收錄在書本的「第十七章  資料流 與 I/O」! 

檔案的應用,在程式設計上一直是個重點。雖然有了資料庫幫我們紀錄資料,但有些小資料不需要勞師動眾、也不必存放太久,如果用一個文字檔來記錄,反而更簡單。

舉例來說,尚未上線的系統、或是有些功能繁雜的程式要撰寫。我們就可以利用檔案的功能來做紀錄。一邊測試一邊記錄這些程式在各階段的運作狀況,每個階段成功與否都可以直接寫入文字檔裡面,不需要跟資料庫搶資源、搶連線。畢竟小檔案I/O的速度,一般來說都快過資料庫。

以前我做過B2B的案子,用Rosettanet XML來傳遞資料(關於Rosettanet,請看中文網站的說明,http://www.rosettanettaiwan.org.tw/)。當時用的技術是 VB 6.0 + ASP + MS BizTalk Server + MS SQL Server 2000。

依照實際的狀況,我們會同時用「檔案」與「資料庫」來記錄這些流程。底下的五大步驟,前三項都會用文字檔做紀錄,因為這些小資料是自己Debug(除錯)用的,往往是系統出問題才會去察看,也不太有保留的價值,所以我們採用文字檔來記錄。

1. 程式定時啟動(例如:每五分鐘啟動一次),並開始記錄處理流程。
2. 從資料庫搜尋資料。符合條件的紀錄就撈出來,組合成XML檔案。
   (執行時間與XML檔案都會存成文字檔,存在專有的目錄底下)
3. 將XML檔案,轉換成 Rosettanet格式。
   (執行時間與Rosettanet XML檔案都會存檔,放在專有的目錄底下)
4. 交給 Server準備發送。此時,就會用資料表來記錄時間與相關資料了。
5. 傳送給對方的Server。對方收到後,我們也會把時間記錄在資料表裡面。

註解:後面兩個流程要用資料表來做紀錄,是為了給客戶與主管查驗,日後也能統計與分析我們這套B2B系統的發送成功率等等。

除了大型的系統、複雜的程序需要做Log紀錄檔之外,網站常用的「訪客計數器」,也可以用檔案的方式來控管。可見存取檔案的用法,真的很多樣化。

 

  以下是發表的新書內容:  本文範例已經收錄在書本的「第十七章  資料流 與 I/O」! 

題名:    ASP.NET專題實務 

[廣告&團購] 新書上市-- ASP.NET專題實務(文魁出版)

本書目錄:http://www.kingsinfo.com.tw/item_detail.asp?pro_id=7085

ISBN:  978-986-204-238-0 

著者:  周棟祥博士, 吳進魯

MIS2000 Lab. 編著 

 

審稿教授:南台科大 吳盛博士

出版者:  文魁資訊 http://www.kingsinfo.com.tw 出版時間:  2008.07 
版次:  初版  裝訂:  平裝附光碟片 
分類號:  312.1695  標題:  網頁設計 , 全球資訊網 

 

 

Q:每一天都用一個檔案,用來記錄當天每支程式內部的執行狀況。

以下是相關的規範:

 

1.          檔案統一放在 C:\MIS2000Lab_ASP.NET_Log目錄底下。
2.          每一天都用一個單獨的子目錄,子目錄名稱就是當天日期。
3.          檔名必須是以當天日期為名,副檔名是.log,例如:20081231.log。
4.          檔案內每一段訊息,都要記錄完整的日期與時間(年/月/日/時/分/秒)。
            每段訊息各自獨立一行,格式如下:
            [2008/04/01 14:00:33] Message:  錯誤訊息XXXYYY
5.          檔案內的文字,採用 Big5正體中文來編碼。

 


    記錄檔案的後置程式碼如下,其實不難,大部分都學過了。

 

 

01 Dim myLog_Msg As String  
02
03 Dim myLog_FileName As String = System.DateTime.Now.ToString("yyyyMMdd")
04
05   '-- 以日期當作檔名,一天記錄一個檔案。
06
07   
08
09
10
11   Try
12
13
14
15       Dim my_Dir As String = "c:\MIS2000Lab_ASP.NET_Log\" & System.DateTime.Now.ToString("yyyyMMdd")
16
17       If Not Directory.Exists(my_Dir) Then
18
19             Directory.CreateDirectory(my_Dir)  '--如果這目錄不存在,就建立它。
20
21       End If
22
23   
24
25
26
27       Dim strRecord As String =  
28
29
30 System.String.Format("[{0:yyyy/MM/dd hh:mm:ss}]Message : {1}", System.DateTime.Now, my_LogMsg.Trim())
31
32 '--每一段訊息,都要記錄完整的日期與時間(年/月/日/時/分/秒)。
33
34       Dim LogFile As String = my_Dir & "\" & myLog_FileName + ".log"    
35
36 '--每一個紀錄檔的副檔名都是 .log
37
38   
39
40
41
42       Dim sw As New StreamWriter(LogFile, True, System.Text.Encoding.GetEncoding("BIG5"))
43
44             '--第一個參數,檔名。
45
46             '--第二個參數,是否採用APPEND的方式?表示新的資料,會附加在檔案末端。
47
48             '--第三個參數,正體中文編碼 System.Text.Encoding.GetEncoding("BIG5"),預設值UTF-8。
49
50           sw.WriteLine(strRecord)
51
56           sw.Flush()
57
58
59
60           sw.Close()
61
62           sw.Dispose()
63
64   Catch ex As Exception
65
66        ex.Message.ToString()
67
68   End Try

 

 

 

後續還有兩個衍生的範例.......有機會再公開

本文範例已經收錄在書本的「第十七章  資料流 與 I/O」! 

 ..........................................................................................

相關文章,請看這一篇----FileUpload控制項,檔案上傳  

 相關內容,均收錄在我的新書裡面。請參考:[廣告] 新書上市-- ASP.NET專題實務(文魁出版)

 

下一篇文章:

File 與 Log #2----[圖片版]訪客計數器(用.txt檔案來記錄)

 







 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估