在Azure中保存日志文件

时间:2014-10-03 01:14:47

标签: file asp.net-mvc-4 azure logging azure-storage-blobs

总结

我想在天蓝色的文本文件中捕获它

Console.WriteLine("Message");

长文:

我今天的问题是如何在天蓝色的

中保存blob存储中的日志文件

我曾经有过这段代码而且服务很好,但这使他成为了我的本地磁盘。

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

我希望你能指导我,尽力做到最好。

1 个答案:

答案 0 :(得分:3)

您应该利用内置的Azure诊断服务,该服务比现有方法(http://msdn.microsoft.com/en-us/library/azure/gg433048.aspx)扩展得更好。

您需要使用诊断跟踪语句替换您的Console.WriteLine语句(您需要添加using语句,然后只需用'控制台'跟踪'跟踪')。请参阅:http://msdn.microsoft.com/en-us/library/zd83saa2.aspx

在应用程序的配置文件中,您需要确保定义相应的Azure存储帐户以将条目写入 - 它们将显示在通常称为“WADWindowsEventLogsTable”的表中。请参阅:http://msdn.microsoft.com/en-us/library/azure/hh411534.aspx