Ich versuche schon seit geraumer Zeit, Trace-Logging einzurichten und es gelingt mir einfach nicht, es richtig zum Laufen zu bringen. Es hilft nicht, dass es so viele falsche/veraltete Artikel zu diesem Thema gibt. Aber bitte kann mir jemand eine gute und praktische Einrichtung für Trace-Logging & Anzeige für Azure (1.6) geben?
Alles, was ich tun möchte, ist die Möglichkeit, Trace-Nachrichten von meiner App aufzuzeichnen und anzuzeigen.
Ich habe angefangen mit dem standardmäßigen DiagnosticMonitorTraceListener, aber das landet in der Tabellenspeicherung. Ich kann einfach nicht herausfinden, wie ich mit den Logs in der Tabellenspeicherung interagieren soll. In Visual Studio kann ich sie 'anzeigen', aber es ist so unglaublich umständlich, sie zu verwenden, dass sie praktisch nutzlos ist. Keine Sortierung, ich muss umständliche Datumsfilter schreiben, die die Hälfte der Zeit nicht funktionieren.
Benutzerdefinierte Logs scheinen der richtige Weg zu sein. Ich habe viel mit log4net gearbeitet, also habe ich das ausgewählt. Du kannst log4net auf Trace umleiten, aber dann landest du wieder bei der gleichen grottenschlechten Tabellenspeicherung. Eigene Logdatei ist die Lösung. Jetzt bin ich schon verwirrt, ob das unterstützt wird oder nicht. Einige Artikel erwähnen diagnostische Dateisperren, die alle möglichen Probleme verursachen. Ich bin mir nicht sicher, ob das immer noch ein Problem ist, aber es ist merkwürdig, warum die Fähigkeit zur Übertragung von benutzerdefinierten Logs geben, wenn man die Logs nicht lesen/schreiben kann?! Wie auch immer, ich hatte keine Probleme beim Schreiben ins Log (die ich bemerkt habe).
Die Einrichtung erfolgt gemäß den MSDN-Artikeln (übrigens sehr vage und weit verstreut). Definiere das LocalStorage-Element in der ServiceDefinition (128Mb). Füge beim Start der Rolle das Verzeichnis für die Log-Übertragung hinzu. Los geht's. Das scheint zu funktionieren. Bis nach einer Weile die Rolle bei einem Neustart mit der Meldung "OverallQuota ist nicht ausreichend groß" abstürzt und die Rolle einfach abstirbt und sich weigert, wieder hochzufahren. Auch innerhalb von 4080Mb ist sooo viel Platz verfügbar, das ergibt einfach keinen Sinn.
Habe wiederum Artikel befolgt, um die Quote zu erhöhen, aber das schien die Dinge nur noch schlimmer zu machen. Setze die Größe des DiagnosticStore auf 8Gb in der ServiceDefinition. Funktioniert nicht. Stürzt immer noch ab, nur mit der höheren Zahl. Auch das Setzen des OverallQuota auf 8Gb hilft nicht. Aus irgendeinem Grund funktioniert eine Neuinstallation auf einem sauberen Image einwandfrei, aber bei einem Neustart oder einem Update entscheidet es sich, die Quoten anders zu berechnen. Unabhängig von der Größe des DiagnosticsStore ist der 'berechnete' Wert immer OverallQuota + Log4Net LocalStorage. Nichts, was ich tue, scheint das zu ändern. Extrem frustrierend, weil es zu funktionieren scheint, nur um später irgendwann zu sterben.
Habe auch diagnostics.wadcfg ausprobiert, aber konnte Azure nicht dazu bringen, sie zu erkennen. Ich habe darauf geachtet, dass sie in den Root-Output-Ordner kopiert wurden und alle Änderungen am Monitor aus meinem Code entfernt wurden. Nichts, absolut nichts... ich habe alle Logdateien durchsucht, die ich auf der Instanz finden konnte. Nirgendwo wurde auch nur eine Erwähnung oder ein Fehler gefunden.
Warum ist das auf Azure so schwierig? Trace-Logs sind das grundlegendste Logging-Tool für jede Anwendung. Das ruiniert wirklich die Azure-Erfahrung.