Loggermessage- und Ereignisprotokoll -IDs
Posted: 07 Feb 2025, 03:14
Mit .NET 9 habe ich nach Microsoft Tutorial einen Windows -Dienst erstellt. Laut diesem Tutorial sieht mein Code aus wie: < /p>
über eine erhöhte Eingabeaufforderung, die die Ereignisquelle für meine Anwendung korrekt zu erstellen scheint, sodass das Ereignisprotokoll erkennt, woher Protokollnachrichten stammen.
In AppStings.json Ich habe die folgende Konfiguration:
Wenn ich nun _logger.logWarning ("foo"); in meinem Code eingesteckt habe, zeigt der Ereignisbieter mir die Nachricht foo mit Ereignis -ID 0. Kein Problem. : < /p>
Dann wird die Nachrichtenleiste im Ereigniszuschauer angezeigt, aber mit einer scheinbar zufälligen 5-stelligen Ereignis-ID zusammen mit einer Reihe von Vorverstärkungswarntext die Beschreibung für die Ereignis-ID 40829 von Quelle Mein Dienstname kann nicht gefunden werden. usw. Br />
[*] Registrieren Sie diese IDs irgendwie mit dem Ereignisprotokoll, damit der Warntext nicht angezeigt wird, oder < /li>
Loggermessage senden alle Nachrichten senden mit id 0 beim Sprechen mit dem Ereignisprotokoll.
[/u]
Code: Select all
public sealed class WindowsBackgroundService (
MyService _myService,
ILogger _logger)
: BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
try
{
await _my.OnStart(stoppingToken);
while (!stoppingToken.IsCancellationRequested)
await _my.DoWorkAsync(stoppingToken).ConfigureAwait(false);
}
< /code>
usw. Ich registriere den Dienst mit sc.exe create
In AppStings.json Ich habe die folgende Konfiguration:
Code: Select all
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
},
"EventLog": {
"SourceName": "My Service Name",
"LogName": "Application",
"LogLevel": {
"Default": "Warning",
"Microsoft": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
},
Code: Select all
internal static partial class LogMessage
{
[LoggerMessage(Level = LogLevel.Warning, Message = "Bar")]
public static partial void Bar(ILogger logger);
< /code>
mit Aufruf: < /p>
LogMessage.Bar(_logger);
[*] Registrieren Sie diese IDs irgendwie mit dem Ereignisprotokoll, damit der Warntext nicht angezeigt wird, oder < /li>
Loggermessage senden alle Nachrichten senden mit id 0 beim Sprechen mit dem Ereignisprotokoll.
[/u]