我正在使用Azure Web作業。另外我知道TextWriter用於在web作業(VS 2013)的情況下寫入日誌。但是,日誌是在blob容器下的「輸出日誌」文件夾下創建的。這些不是用戶友好的。我必須打開每個文件才能讀取寫入它的消息。登錄Azure Web作業
有什麼辦法可以改變日誌記錄到表,這是用戶友好的閱讀?
在此先感謝。
我正在使用Azure Web作業。另外我知道TextWriter用於在web作業(VS 2013)的情況下寫入日誌。但是,日誌是在blob容器下的「輸出日誌」文件夾下創建的。這些不是用戶友好的。我必須打開每個文件才能讀取寫入它的消息。登錄Azure Web作業
有什麼辦法可以改變日誌記錄到表,這是用戶友好的閱讀?
在此先感謝。
我不確定是否有「原生」方式來執行此操作,但可以通過nuget添加Azure存儲客戶端並編寫自己的「日誌到Azure表」。
您可以使用Windows Azure的Semantic Logging Application Block。 它允許您登錄到Azure表格存儲。
定義您的EventSource:
// A simple interface to log what you need ...
public interface ILog
{
void Debug(string message);
void Info(string message);
void Warn(string message);
void Error(string message);
void Error(string message, Exception exception);
}
實現的接口:
和實現(實現你的接口必須與NonEventAttribute
see this post裝飾):
[EventSource(Name = "MyLogEventsource")]
public class Log : EventSource, ILog
{
public Log()
{
EventSourceAnalyzer.InspectAll(this);
}
[NonEvent]
public void Debug(string message)
{
DebugInternal(message);
}
[Event(1)]
private void DebugInternal(string message)
{
WriteEvent(1, message);
}
[NonEvent]
public void Info(string message)
{
InfoInternal(message);
}
[Event(2)]
private void InfoInternal(string message)
{
WriteEvent(2, message);
}
[NonEvent]
public void Warn(string message)
{
WarnInternal(message);
}
[Event(3)]
private void WarnInternal(string message)
{
WriteEvent(3, message);
}
[NonEvent]
public void Error(string message)
{
ErrorInternal(message, "", "");
}
[NonEvent]
public void Error(string message, Exception exception)
{
ErrorInternal(message, exception.Message, exception.ToString());
}
[Event(4)]
private void ErrorInternal(string message, string exceptionMessage, string exceptionDetails)
{
WriteEvent(4, message, exceptionMessage, exceptionDetails);
}
}
現在你可以註冊您的活動資訊來源:
var log = new Log();
var eventListeners = new List<ObservableEventListener>();
// Log to Azure Table
var azureListener = new ObservableEventListener();
azureListener.EnableEvents(log , EventLevel.LogAlways, Keywords.All);
azureListener.LogToWindowsAzureTable(
instanceName: Environment.GetEnvironmentVariable("WEBSITE_INSTANCE_ID") ?? "DevelopmentInstance",
connectionString: CloudConfigurationManager.GetSetting("MyStorageConnectionString")
tableAddress: "MyLogTable");
eventListeners .Add(azureListener);
https://msdn.microsoft.com/en-us/library/azure/gg433048.aspx此鏈接建議我們可以使用相同的診斷工具。但是我不確定如何進入診斷配置。 – genericuser