Мой вопрос:
Я относительно новичок в использовании контейнеров Io C и механизмов регистрации в них. NET Core.
Как получить журналы, написанные моей сущностью Контекст Framework Core для отображения в моем Azure журнале функций и в ApplicationInsights соответственно.
Фон:
У меня есть Azure Функция, в которой я использую .AddDbContext()
для регистрации моего DbContext для внедрения зависимостей:
public override void Configure(IFunctionsHostBuilder builder)
{
var connectionString = Environment.GetEnvironmentVariable("MyConnectionString");
builder.Services.AddDbContext<MyDbContext>(
options => options.UseSqlServer(connectionString));
}
в Startup.cs.
Впрыснутый DbContext затем используется в моей библиотеке уровня доступа к данным для выполнения, ну, в общем, связанных с базой данных. В некоторых случаях я хочу явно регистрировать, что происходит, но без необходимости реализовывать выделенное поле или свойство регистратора в моем классе DbContext.
Вместо этого я пытаюсь получить доступ к службе журналирования, которая зарегистрирована в моем DbContext через .AddDbContext()
, и войти в систему с экземпляром ILogger, который я получаю по var logger = contextInstance.GetService<ILogger<MyDbContext>>();
.
Теперь теоретически я бы просто go например logger.LogInformation("Something happened!");
. Так как это не вызывает каких-либо исключений во время выполнения, я думаю, это вроде как работает.
Теперь я хотел бы видеть "Что-то случилось!" в моих журналах функций. Например:
Я знаю, что отображение этих журналов в Azure Журналы функций приведут к тому, что все журналы, записанные в контексте, появятся в моем журнале функций как хорошо. Я позабочусь о фильтрации позже ... или, может быть, у кого-то есть предложение по этому вопросу сразу?
Можно ли сделать так, как я хочу?
На заметку :
Если у кого-то есть мнение об этом подходе или он мог бы указать мне более эффективный способ достижения моего входа в этот сценарий, я был бы рад прочитать любые комментарии по этому поводу.