NLog внедряет пользовательское свойство с помощью .NET6, например метод WithProperty ⇐ C#
NLog внедряет пользовательское свойство с помощью .NET6, например метод WithProperty
У меня был проект .NET 4.8, в котором я использовал NLog следующим образом:
публичный класс ReportsController: ApiController { частный статический регистратор NLog.Logger = NLog.LogManager.GetLogger("Приложение"); публичная недействительность SomeMethod() { строка userID = 'ABC123'; logger.WithProperty("UserId", userID).Info("UserId {0} создал новый отчет.", userID); } } С помощью приведенного выше кода мне удалось сохранить свойство UserId в специальном поле таблицы журналов базы данных, чтобы легко фильтровать журналы по идентификатору пользователя.
Теперь мы обновили приложение до .NET 6, используя внедрение зависимостей и т. д.
Поэтому текущий код выглядит следующим образом:
с использованием Microsoft.Extensions.Logging; общедоступный класс AuthorizationManagerService: IAuthorizationManagerService { частный ILogger только для чтения _logger; //интерфейс в Microsoft.Extensions.Logging public AuthorizationManagerService (регистратор ILogger) { _logger = регистратор; } публичная недействительность SomeMethod() { строка userID = 'ABC123'; _logger.LogInformation("UserId {0} создал новый отчет.", userID); } В файле appsettings.json я определил следующие правила для NLog:
"NLog": { «throwConfigExceptions»: правда, "internalLogLevel": "Ошибка", "internalLogFile": "${CurrentDir}/internal-nlog.txt", "расширения": [ { "сборка": "NLog.Extensions.Logging" }, { "сборка": "NLog.Web.AspNetCore" } ], "цели": { «асинхронный»: ложь, "журнальный файл": { "тип": "Файл", "fileName": "${CurrentDir}/Logs/nlog-${shortdate}.log" }, "logconsole": { "type": "Консоль" }, "трассировка журнала": { "тип": "След" }, "база данных журналов": { "тип": "База данных", "connectionString": "Источник данных=MyDatabaseInstance;Начальный каталог=MyDatabase;Встроенная безопасность=false;идентификатор пользователя=TheUser;пароль=НЕПРАВИЛЬНО;", "keepConnection": "истина", "commandText": "вставить в \"Журналы\"(\"LogDate\", \"LogMessage\", \"LogLevel\", \"LogIP\", \"LogUrl\", \"LogException\", \ Значения «LogUserId», «LogModule», «LogCallSite», «LogSessionId») (@LogDate, @LogMessage, @LogLevel, @LogIP, @LogURL, @LogException, @LogUserId, @LogModule, @ LogCallSite, @LogSessionId);", "параметры": [ { "name": "@LogDate", "layout": "${date}" }, { "name": "@LogMessage", "layout": "${message}" }, { "name": "@LogLevel", "layout": "${level:uppercase=true}" }, { "name": "@LogIP", "layout": "${aspnet-request-ip}" }, { "name": "@LogUrl", "layout": "${aspnet-request-url}" }, { "name": "@LogException", "layout": "${Exception:format=tostring}" }, { "name": "@LogUserID", "layout": "${event-properties:UserId}" }, { "name": "@LogModule", "layout": "${logger}" }, { "name": "@LogCallSite", "layout": "${callsite:filename=true}" }, { "name": "@LogSessionID", "layout": "${aspnet-sessionid}" } ] } }, "правила": [ { "логгер": "*", "minLevel": "Информация", "writeTo": "база данных журнала" }, { "логгер": "*", "minLevel": "Отладка", "writeTo": "logconsole" }, { "логгер": "*", "minLevel": "Информация", "writeTo": "файл журнала" }, { "логгер": "*", "minLevel": "Трассировка", "writeTo": "logtrace" } ] } Как передать информацию об идентификаторе пользователя, чтобы она была записана в поле базы данных LogUserId, как это делалось раньше?
У меня был проект .NET 4.8, в котором я использовал NLog следующим образом:
публичный класс ReportsController: ApiController { частный статический регистратор NLog.Logger = NLog.LogManager.GetLogger("Приложение"); публичная недействительность SomeMethod() { строка userID = 'ABC123'; logger.WithProperty("UserId", userID).Info("UserId {0} создал новый отчет.", userID); } } С помощью приведенного выше кода мне удалось сохранить свойство UserId в специальном поле таблицы журналов базы данных, чтобы легко фильтровать журналы по идентификатору пользователя.
Теперь мы обновили приложение до .NET 6, используя внедрение зависимостей и т. д.
Поэтому текущий код выглядит следующим образом:
с использованием Microsoft.Extensions.Logging; общедоступный класс AuthorizationManagerService: IAuthorizationManagerService { частный ILogger только для чтения _logger; //интерфейс в Microsoft.Extensions.Logging public AuthorizationManagerService (регистратор ILogger) { _logger = регистратор; } публичная недействительность SomeMethod() { строка userID = 'ABC123'; _logger.LogInformation("UserId {0} создал новый отчет.", userID); } В файле appsettings.json я определил следующие правила для NLog:
"NLog": { «throwConfigExceptions»: правда, "internalLogLevel": "Ошибка", "internalLogFile": "${CurrentDir}/internal-nlog.txt", "расширения": [ { "сборка": "NLog.Extensions.Logging" }, { "сборка": "NLog.Web.AspNetCore" } ], "цели": { «асинхронный»: ложь, "журнальный файл": { "тип": "Файл", "fileName": "${CurrentDir}/Logs/nlog-${shortdate}.log" }, "logconsole": { "type": "Консоль" }, "трассировка журнала": { "тип": "След" }, "база данных журналов": { "тип": "База данных", "connectionString": "Источник данных=MyDatabaseInstance;Начальный каталог=MyDatabase;Встроенная безопасность=false;идентификатор пользователя=TheUser;пароль=НЕПРАВИЛЬНО;", "keepConnection": "истина", "commandText": "вставить в \"Журналы\"(\"LogDate\", \"LogMessage\", \"LogLevel\", \"LogIP\", \"LogUrl\", \"LogException\", \ Значения «LogUserId», «LogModule», «LogCallSite», «LogSessionId») (@LogDate, @LogMessage, @LogLevel, @LogIP, @LogURL, @LogException, @LogUserId, @LogModule, @ LogCallSite, @LogSessionId);", "параметры": [ { "name": "@LogDate", "layout": "${date}" }, { "name": "@LogMessage", "layout": "${message}" }, { "name": "@LogLevel", "layout": "${level:uppercase=true}" }, { "name": "@LogIP", "layout": "${aspnet-request-ip}" }, { "name": "@LogUrl", "layout": "${aspnet-request-url}" }, { "name": "@LogException", "layout": "${Exception:format=tostring}" }, { "name": "@LogUserID", "layout": "${event-properties:UserId}" }, { "name": "@LogModule", "layout": "${logger}" }, { "name": "@LogCallSite", "layout": "${callsite:filename=true}" }, { "name": "@LogSessionID", "layout": "${aspnet-sessionid}" } ] } }, "правила": [ { "логгер": "*", "minLevel": "Информация", "writeTo": "база данных журнала" }, { "логгер": "*", "minLevel": "Отладка", "writeTo": "logconsole" }, { "логгер": "*", "minLevel": "Информация", "writeTo": "файл журнала" }, { "логгер": "*", "minLevel": "Трассировка", "writeTo": "logtrace" } ] } Как передать информацию об идентификаторе пользователя, чтобы она была записана в поле базы данных LogUserId, как это делалось раньше?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как я могу обрабатывать Elastic.CommonSchema.NLog с помощью Elastic.NLog.Targets
Anonymous » » в форуме C# - 0 Ответы
- 66 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как я могу обрабатывать Elastic.CommonSchema.NLog с помощью Elastic.NLog.Targets
Anonymous » » в форуме C# - 0 Ответы
- 84 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как я могу обрабатывать Elastic.CommonSchema.NLog с помощью Elastic.NLog.Targets
Anonymous » » в форуме C# - 0 Ответы
- 107 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Восхождение в SEQ от NLOG, делая переменную URL SEQ, настраиваемой в NLOG.CONFIG
Anonymous » » в форуме C# - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Восхождение в SEQ от NLOG, делая переменную URL SEQ, настраиваемой в NLOG.CONFIG
Anonymous » » в форуме C# - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-