Logging
Log-Einstellungen können über die Konfiguration in der Sektion Serilog
vorgenommen werden. Serilog ist die verwendete Log-Bibliothek. Mit sogenannten Sinks kann Serilog verschiedene Formate und Speichersysteme unterstützen.
Verfügbare Log-Level
Mit dem Festlegen des MinimumLevel
, ist die Protokollierung für Nachrichten auf dem angegebenen Level (0-5) und höher aktiviert. Der Standard-Level ist Information
. Es gibt folgende Level:
Verbose
|Trace
= 0Debug
= 1Information
= 2Warning
= 3Error
= 4Fatal
|Critical
|None
= 5
Logger konfigurieren
Das folgende Beispiel zeigt eine Konfiguration, die Logdateien in den Pfad C:\CMI_STS\Log
schreibt. Der Log-Level kann für verschiedene Namespaces unterschiedlich festgelegt werden, in dem Serilog.MinimumLevel.Override.<Namespace>
auf einen LogLevel gesetzt wird. Default
wird als Standard-Level verwendet. Die Namespaces Duende.IdentityServer
und CMI
sollten bei der Fehleranalyse auf den Level Debug
oder Verbose
gestellt werden, für den produktiven Betrieb auf Information
gestellt werden.
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Duende.IdentityServer": "Information",
"CMI": "Information",
"System": "Warning",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
"Microsoft.AspNetCore.Authentication": "Information"
}
},
"Using": ["Serilog.Sinks.File"],
"WriteTo": [
{
"Name": "File",
"Args": {
"rollingInterval": "Day",
"rollOnFileSizeLimit": true,
"fileSizeLimitBytes": 100000,
"path": "C:\\CMI_STS\\Log\\sts-.txt"
}
}
]
}
}
Die folgenden Quellen beschreiben die Konfigurationsmöglichkeiten von Serilog:
Sinks
Es sind die folgenden Sinks installiert:
- File (Schreiben in Dateien)
- Console (Ausgabe auf der Konsole)
- Seq (Senden von Logs an einen Seq-Server)
- ApplicationInsights (Senden von Logs an Microsoft Application Insights)
Wichtig: Serilog wird beim Start der Anwendung zuerst zur Ausgabe auf die Konsole konfiguriert. Diese Einstellung wird später durch die Konfiguration überschrieben. Sollte es zu Fehlern zwischen dem Start der Anwendung und dem Laden der Log-Konfiguration kommen, sind diese Fehler nur auf der Konsole sichtbar, oder beim Hosting mittels IIS im Standard-Output-Stream-Log (stdoutLog
).
Application Insights
Das folgende Beispiel zeigt eine mögliche Konfiguration in der JSON-Ausprägung in der Datei appsettings.json
für den Sink ApplicationInsights:
Der instrumentationKey kann der Application Insights im Azure Portal entnommen werden.
{
"Serilog": {
"Using": [
"Serilog.Sinks.ApplicationInsights"
],
"Enrich": [ "FromLogContext" ],
"Properties": {
"Application": "CMI STS"
},
"WriteTo": [
{
"Name": "ApplicationInsights",
"Args": {
"telemetryConverter": "Serilog.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights",
"instrumentationKey": "00000000-0000-0000-0000-000000000000"
}
}
]
}
}
Standard-Output-Stream des Hosting-Prozesses (IIS Hosting)
Das Log des Standard-Output-Stream des Hosting-Prozesses sollte normalerweise deaktiviert sein. Wenn der CMI STS nicht startet oder sofort abstürzt, kann dieses Log zeitweise eingeschaltet werden. Das Windows-Event-Log enthält möglicherweise weitere Informationen.
In der XML-Datei web.config
können folgende Attribute des Elements aspNetCore
angepasst werden:
stdoutLogEnabled
:true
aktiviert das Log.stdoutLogFile
: Dateipfad, in den das Log geschrieben wird.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
[...]
<aspNetCore [...] stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
</system.webServer>
</location>
</configuration>