ILogger не вводится в долговременные функции v2.0 - PullRequest
1 голос
/ 07 ноября 2019

В данный момент я пытаюсь добавить ILogger или ILogger<> в функцию Azure Durable, чтобы использовать ведение журнала в функциях Activity.

Запись в функцию Orchestration работает нормально и вводитсяв самом методе, но попытки внедрения конструктора для ILogger всегда приводят к пустому исключению.

builder.Services.AddLogging();

Кажется, что вышеупомянутое не работает при добавлении в файл запуска (Bootstrapper) и не делает измененийon:

builder.Services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));

Кто-нибудь решил это?

1 Ответ

1 голос
/ 07 ноября 2019

Удалите одну из этих строк из вашего файла запуска:

builder.Services.AddLogging();
builder.Services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));

Затем, куда бы вы ни вводили ILogger, добавьте type, в который вводится ваш регистратор, используя ILogger<T>, т.е. :

public class Function1
{
    private readonly ILogger _logger;

    public Function1(ILogger<Function1> logger)
    {
        _logger = logger;
    }

    [FunctionName("Function1")]
    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req)
    {
        _logger.LogInformation("C# HTTP trigger function processed a request.");

        string name = req.Query["name"];

        string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
        dynamic data = JsonConvert.DeserializeObject(requestBody);
        name = name ?? data?.name;

        return name != null
            ? (ActionResult)new OkObjectResult($"Hello, {name}")
            : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...