Stiamo utilizzando DiagnosticMonitorTraceListener come un listener di analisi generale (soprattutto per per ASP.NET Monitoraggio dello), così come un Enterprise Library 5 listener per la gestione delle eccezioni. Funziona bene quando si esegue su Azure, ma è importante poter eseguire il sito Web all'esterno di Azure con modifiche minime.Running With DiagnosticMonitorTraceListener Al di fuori di Azure Compute Emulator
Una possibilità è quella di registrare in modo dinamico come segue:
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;
}
}
Questo funziona per ASP.NET Monitoraggio dello e gli usi generali della System.Diagnosics ma non per Enterprise Library dove abbiamo il seguente hardware configurazione coded: senza indirizzo
<categorySources>
<add switchValue="All" name="General">
<listeners>
<add name="Event Log Listener" />
<add name="Azure Diagnostics Trace Listener" />
</listeners>
</add>
</categorySources>
sinistra, le chiamate verso ExceptionPolicy.HandleException genererà:
Non in esecuzione in un servizio ospitato o nella struttura di sviluppo.
Per rimuovere in modo condizionale questo in base a dove è in esecuzione l'app, potremmo utilizzare l'API di configurazione fluente per EL5, ma dovremmo riscrivere la nostra configurazione (è tutto o niente).
Potremmo anche utilizzare le trasformazioni di web.config eccetto che, oltre ad avere già 3 diverse configurazioni di soluzioni (ad esempio, dev, staging, produzione), dovremmo introdurre un 4 ° per distinguere tra dev-standalone vs. dev -azzurro.
Un'ultima opzione sarebbe semplicemente creare un listener personalizzato che instraderà tutti i messaggi a ** ** (se in esecuzione su Azure) o non eseguirà nulla.
Altri suggerimenti?
FYI, monitoraggio ASP.NET Salute è configurato come segue:
<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>