LoggerMessage и идентификаторы журнала событийC#

Место общения программистов C#
Ответить
Anonymous
 LoggerMessage и идентификаторы журнала событий

Сообщение Anonymous »

Используя .net 9, я создал службу Windows после Microsoft Tutorial. Согласно этому уроку, мой код выглядит как: < /p>

Код: Выделить всё

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>
и т.д.  Я зарегистрирую службу с помощью sc.exe create 
из поднятой командной строки, которая, кажется, правильно создает источник события для моего приложения, так что журнал событий распознает, откуда поступают сообщения журнала.
В appsettings.json у меня есть следующая конфигурация:

Код: Выделить всё

"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.Hosting.Lifetime": "Information"
},
"EventLog": {
"SourceName": "My Service Name",
"LogName": "Application",
"LogLevel": {
"Default": "Warning",
"Microsoft": "Information",
"Microsoft.Hosting.Lifetime": "Information"
}
}
},
Теперь, если я положу _logger.logwarning ("foo"); в моем коде, то просмотр событий показывает мне сообщение foo с идентификатором события 0. Нет проблем.
Однако, если я использую рекомендуемую LoggerMessage Framework, например, : < /p>

Код: Выделить всё

internal static partial class LogMessage
{
[LoggerMessage(Level = LogLevel.Warning, Message = "Bar")]
public static partial void Bar(ILogger logger);
< /code>
с вызова: < /p>
    LogMessage.Bar(_logger);
Тогда панель сообщений отображается в просмотре событий, но с некоторым, казалось бы, случайным 5-значным идентификатором события, наряду с кучей инструкции предупреждения о преамбуле Описание для идентификатора события 40829 из Имя моего имени службы не может быть найдено. и т. Д. Br />
  • Зарегистрируйте эти идентификаторы в журнале событий, так что предупреждающий текст не отображается, или < /li>
    Сделать loggermessage Отправить все сообщения с идентификатором 0 при разговоре с журналом событий.


Подробнее здесь: https://stackoverflow.com/questions/794 ... nt-log-ids
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»