2014-10-03 26 views
0

總之保存登錄Azure的文件

我想在蔚藍的

Console.WriteLine("Message"); 

長文本捕捉到了這個文本文件:如何

以及今天我的問題是在azure的blob存儲中保存一個日誌文件

我曾經擁有這個代碼並且運行良好,但是這個瘋狂e他並保存在我的本地磁盤上。

private string sLogFormat; 
private string sErrorTime; 

public CreateLogFiles() 
{ 
    sLogFormat = DateTime.Now.ToShortDateString().ToString()+" "+DateTime.Now.ToLongTimeString().ToString()+" ==> "; 

    string sYear = DateTime.Now.Year.ToString(); 
    string sMonth = DateTime.Now.Month.ToString(); 
    string sDay = DateTime.Now.Day.ToString(); 
    sErrorTime = sYear+sMonth+sDay; 
} 

public void ErrorLog(string sPathName, string sErrMsg) 
{ 
    StreamWriter sw = new StreamWriter(sPathName+sErrorTime,true); 
    sw.WriteLine(sLogFormat + sErrMsg); 
    sw.Flush(); 
    sw.Close(); 
} 

CreateLogFiles Err = new CreateLogFiles(); 
Err.ErrorLog("something/another/log","Message"); 

- 重要的是,所有行都在我的項目的輔助應用程序或webjobs中生成。

但現在我想將我的網站發佈到Azure,因爲我可以保持這一點,因爲正如我所說的那樣。

我正在測試這個方法,顯然效果很好,問題是這個文件每次都會變大,這個過程需要更長的時間才能完成。

CloudStorageAccount storageAccount = storageAzure //Data Access; 
var cloudBlobClient = storageAccount.CreateCloudBlobClient(); 

var blob = cloudBlobClient.GetContainerReference(path).GetBlockBlobReference("log.txt"); //File 
var textoriginal = blob.DownloadText(); // Download text of file 
var textoadd = textoriginal + "msjError"; // add new text 

blob.UploadText(textoadd.ToString()); // upload all the text 

我希望你能引導我,儘量做到最好。

回答

3

您應該考慮利用內置Azure診斷服務,該服務的規模將比現有方法(http://msdn.microsoft.com/en-us/library/azure/gg433048.aspx)好得多。

您需要用您的Console.WriteLine語句替換Diagnostics Trace語句(您需要添加using語句,然後可以用'Trace'替換'Console')。請參閱:http://msdn.microsoft.com/en-us/library/zd83saa2.aspx

在您的應用程序的配置文件中,您需要確保您定義合適的Azure存儲帳戶以寫入條目 - 它們將顯示在通常稱爲「WADWindowsEventLogsTable」的表中)。參見:http://msdn.microsoft.com/en-us/library/azure/hh411534.aspx