#c# #azure #azure-functions
#c# #azure #azure-функции
Вопрос:
Я использую шаблон DI для функций Azure, поэтому я создал файл запуска, который выглядит как:
[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]
namespace MyNamespace
{
public sealed class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
builder.Services.AddLogging();
builder.Services.AddTransient<IMyManager, Mymanager>();
...
}
}
}
и функция Azure:
public sealed class MyFunc
{
public MyFunc(IMyManager manager)
{
_myManager = manager;
}
[FunctionName("MyFunc")]
public async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req,
ILogger log, ExecutionContext context)
{
log.LogInformation("this is a test"); // this log appear in Application Insights
...
}
и MyManager:
public sealed class MyManager: IMyManager
{
public MyManager(ILogger<MyManager> log)
{
_log = log;
}
public async Task ExecuteAsync(...)
{
_log.LogInformation("Execute MyManager"); // this log does not appear in app insights
}
}
Кажется, что ILogger или любой другой внедренный регистратор не отражается в Application Insights. Должен ли я определить его в файле host.json?
Я думал, что это должно работать на месте без внесения изменений.
Ответ №1:
Как указано в документации, предоставленной Microsoft, вы должны настроить свой host.json:
«Конфигурация файла host.json определяет, сколько журналов приложение функций отправляет в Application Insights».
Вы должны, по крайней мере, включить ведение журнала на критическом уровне.
Комментарии:
1. И если я хочу зарегистрировать всю информацию (у меня есть менеджеры с
_log.LogInformation
и где_log
ILogger<T>
), должен ли я использовать вhost.json
следующем параметре:"Host.Results": "Information", "Function": "Information"
? Или достаточно"default": "Information"
?2. @SnakeEyes Да, именно так 🙂 Будьте осторожны, это не host.config, а host.json.
3. Да, по какому вопросу? Первый или второй :)?
4. @SnakeEyes Извините, я не понял. Оба способа в порядке, «по умолчанию» будет установлено для всех регистраторов, если оно не переопределено определенной политикой, такой как «Function» или «Host.Results».