Używamy DiagnosticMonitorTraceListener jako ogólny słuchacza śledzenia (głównie dla Monitorowania ASP.NET Zdrowie), jak również Enterprise Library 5 słuchacza do obsługi wyjątków. Działa to dobrze podczas działania na platformie Azure, ale ważne jest, aby móc uruchomić witrynę poza platformą Azure przy minimalnych zmianach.Running With DiagnosticMonitorTraceListener Poza Azure Compute Emulator
Jedną z opcji jest, aby zarejestrować go dynamicznie, co następuje:
protected void Application_Start()
{
if (Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.IsAvailable)
{
System.Diagnostics.Trace.Listeners.Add(new Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener());
System.Diagnostics.Trace.AutoFlush = true;
}
}
Działa to na monitorowanie ASP.NET Zdrowie i ogólnych zastosowań System.Diagnosics ale nie dla Enterprise Library, gdzie mamy następujący sprzęt komputerowy kodowane konfiguracja:
<categorySources>
<add switchValue="All" name="General">
<listeners>
<add name="Event Log Listener" />
<add name="Azure Diagnostics Trace Listener" />
</listeners>
</add>
</categorySources>
Lewy nieuwzględnione wzywa do ExceptionPolicy.HandleException wygeneruje:
Nie działa w hostowanej usłudze lub w produkcie deweloperskim.
Aby usunąć ten warunkowo na podstawie których aplikacja jest uruchomiona, możemy korzystać z konfiguracji biegle API dla EL5 ale musiałby przepisać naszą konfigurację (to wszystko albo nic).
Możemy również użyć transformacji web.config poza tym, że oprócz 3 różnych konfiguracji rozwiązania (np. Dev, inscenizacja, produkcja), musielibyśmy wprowadzić czwartą, aby odróżnić dev-standalone od dev -lazur.
Jedną z ostatnich opcji jest utworzenie niestandardowego detektora, który spowoduje przekierowanie wszystkich wiadomości do ** ** (jeśli działa na platformie Azure) lub nie robi nic.
Jakieś inne sugestie?
FYI, Monitoring ASP.NET zdrowie jest skonfigurowany w następujący sposób:
<healthMonitoring enabled="true">
<providers>
<add name="TraceWebProvider" type="System.Web.Management.TraceWebEventProvider" />
</providers>
<rules>
<add name="Application Events"
eventName="Application Lifetime Events"
provider="TraceWebProvider"
profile="Default"
minInstances="1"
maxLimit="Infinite"
minInterval="00:01:00" />
</rules>
</healthMonitoring>