Bevorzugte Methode für die Anmeldung bei .NET, das für Azure bereitgestellt wird
Würden Sie sagen, diese ist die optimale Art und Weise zu tun, eine einfache, traditionelle Protokollierung in einem Azure bereitgestellte Anwendung?
Wenn fühlt sich an wie eine Menge Arbeit, um tatsächlich auf die Dateien etc ...
Was gearbeitet am besten für Sie?
Kommentar zu dem Problem
vielleicht best-practices-for-logging-and-tracing-in-net am Programmierer.stackexchange ist auch hilfreich
InformationsquelleAutor der Frage Riri | 2011-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden wir das bauen in der Diagnostik, der schreibt, Azure Table storage. Immer wenn wir eine Nachricht geschrieben, um ein Protokoll, es ist nur eine Spur.WriteLine(...)".
Da die Protokolle geschrieben werden, die für Azure-Tabellenspeicher, wir haben einen Prozess, den download der Logdaten, und entfernen Sie Sie aus der Tabelle Speicher. Dies funktioniert gut für uns, aber ich denke, es kommt wohl auf die Anwendung an.
http://msdn.microsoft.com/en-us/library/gg433048.aspx
Hoffe, es hilft!
[Update]
InformationsquelleAutor der Antwort Brosto
Hinzufügen von ein wenig zu Brosto Antwort: Es dauert nur ein paar Zeilen code zum konfigurieren der Azure-Diagnose. Sie entscheiden, welche Ebene, die Sie aufnehmen möchten (ausführliche, informative, etc.). und wie oft Sie wollen, schieben Sie die lokal zwischengespeicherte log-Nachrichten in Azure-Speicher (normalerweise gehe ich mit so etwas wie 15-Minuten-Intervallen). Log-Nachrichten von allen Ihren Instanzen werden dann aggregiert in der gleichen Tabelle, leicht queryable (oder als Download), mit Eigenschaften definieren die Rolle und Instanz.
Gibt es zusätzliche trace-Anweisungen, wie Trace.TraceError(), Trace.TraceWarning(), etc.
Können Sie sogar einen trace-listener und beobachten Sie Ihre log-Ausgabe in fast-Echtzeit auf Ihren lokalen Rechner. Die Azure AppFabric SDK Proben zip enthält eine Probe (unter \ServiceBus\Scenarios\CloudTrace), dies zu tun.
InformationsquelleAutor der Antwort David Makogon
Zur Fehler-Protokollierung die beste Lösung, die ich sah, ist Elmah. Es erfordert eine SQL-Datenbank, aber das ist der Fehler-Login-tool, das tatsächlich hilft bei der diagnose von Problemen. Es funktioniert gut auf Azure.
InformationsquelleAutor der Antwort seva titov
Für alle meine Azure-Websites, die ich verwenden benutzerdefinierte Protokollierung von Azure-Tabellen. Obwohl ein bisschen mehr Arbeit, ich finde, es gibt mir mehr Kontrolle über die Informationen, die gespeichert wird. Wie Brosto oben kommentiert, ist es am besten, einen lokalen Prozess, der in regelmäßigen Abständen lädt die Protokolle auf Ihrem lokalen system. Wenn Sie das ableiten einer Klasse von
TableServiceEntity
können Sie definieren eine Struktur, die alle Felder, die Sie anmelden möchten, und verwenden Sie die gleiche Klasse zum abrufen der Daten in Ihrer lokalen Anwendung, die ruft die logs. Ich Pflege einige Beispiele der code, dies zu tun auf meinem Anmeldung mit Azure table storage Seite, wenn es helfen niemandem.Eines der Probleme, die ich habe Erfahrung mit der Verwendung der
Trace.Writeline
Methode ist, dass die Protokolle gespeichert werden, auf der lokalen Instanz und sind in regelmäßigen Abständen übertragen Azure table storage. Angesichts der vorübergehenden Natur eines Azure-Instanz, die alle lokalen Speicher muss als vorübergehend angesehen werden, im besten Fall. Also es gibt immer ein Fenster für den Verlust Ihrer log-Daten, während es gehalten wird, auf dem lokalen Laufwerk.Angesichts der Kosten von Azure table storage Transaktionen, Protokollierung direkt auf Azure storage ist extrem kostengünstig. Wenn die Leistung ist ein großes Problem für Sie, kann es sinnvoll sein, dass ein separater thread (oder threads) um die Wartung Speicher gehalten Warteschlange der logging-Daten. Obwohl dies gibt natürlich ähnliche Probleme mit Transienten Daten, wenn die Azure-Instanz zurückgeführt wird, wird das Fenster für dies geschehen sollte viel kleiner sein.
InformationsquelleAutor der Antwort Mike Duffy
Wie bereits erwähnt, die Verwendung von Windows Azure Diagnostics ist der Weg zu gehen. Allerdings werden alle logs von allen Ihren Instanzen landet in einer großen Liste, die hart sein kann zu Lesen. Daher versuche ich, nur senden Sie eine relativ wichtige Meldungen (Warn-level und höher) der Diagnose-Tabellen. Auch so ist es ein Schmerz zu Lesen, die Tabelle direkt. Es gibt ein paar tools gibt, die ich persönlich benutze Cerebrata Diagnostics Manager.
Obwohl die Verwendung der Trace-Funktionen direkt funktioniert gut, ich würde vorschlagen, mit einem logging framework wie NLog oder log4net. Das gibt Ihnen ein bisschen mehr Flexibilität, senden Sie einige Nachrichten Trace/Azure Diagnostics und anderen lokalen Speicherung.
Zum Beispiel, ich habe eine Tonne von trace-logging auf die Spur eines thread-problem hängen. Ich fand, geben ein root-relativer Pfad wie "\ServiceLogs\MyLog.txt" wird die Ausgabe auf dem Laufwerk F: auf die Instanz. Also ich habe weitergeleitet, dass die Instanz filesystem, sondern als die Diagnose-Tabellen. Sie müssen die Fernbedienung, die in jede Instanz zu sehen, die Protokolle, aber in diesem Fall ist es ein guter trade-off.
InformationsquelleAutor der Antwort Brian Reischl
Ich benutze Enterprise Library 5.0-Logging Application Block zeigt auf der Azure-Diagnose-Monitor Trace-Listener.
Enterprise Library auf Windows Azure
InformationsquelleAutor der Antwort vtortola
Zwar nicht die traditionelle Protokollarchitektur die Geschichte Rahmen wirklich helfen kann, wenn Sie wirklich wollen, zu Lesen Sie Ihre logs, es "macht" schreiben Sie alle Protokolle (und andere relevante Informationen) im Kontext, so dass, wenn Sie Sie später Lesen Sie alles bekommen, was Sie brauchen.
Es unterstützt auch das speichern des logs auf Azure Table storage.
Gibt es mehr Informationen und Beispiele auf in diesem blog-post.
InformationsquelleAutor der Antwort Amit Apple