Внедренный в пользовательский регистратор классов в функции Azure не пишет в консоль - PullRequest
2 голосов
/ 10 июля 2019

У меня есть функция Azure V2 (триггер IotHub). Если я использую встроенный в функцию триггера ILogger, то log.Debug () выдает отлично:

[FunctionName("MainFunc")]
public async Task Run([IoTHubTrigger("messages/events", Connection = "IotHubCompatibleEndpointConnectionString", ConsumerGroup = "iothub_trigger_sqldb_cg")]
    EventData eventData,
    ILogger log)
{

    log.LogDebug("it outputs!"); // works perfectly

Что я хочу сделать, это добавить регистратор в мой пользовательский сервис:

public class Startup : IWebJobsStartup
{
    public void Configure(IWebJobsBuilder builder)
    {
        builder.Services.AddScoped<ITelemetryProcessor, TelemetryProcessor>();
        builder.Services.AddScoped<INotificationSender, NotificationSender>();
        builder.Services.AddLogging();
    }
}

В конструкторе службы я пытаюсь записать журнал в консоль вывода двумя способами

public TelemetryProcessor(INotificationSender notificationSender, ILogger<ITelemetryProcessor> log, ILoggerFactory loggerFactory)
{
    _notificationSender = notificationSender;
    _log = loggerFactory.CreateLogger("common");
    _log.LogDebug("write something"); // doesn't output
    log.LogDebug("write something v2"); // doesn't output as well
 ....
}

1 Ответ

0 голосов
/ 11 июля 2019

Ведение журнала должно быть настроено в host.json. После добавления раздела ведения журнала, введенный журнал (оба) начал работать

Например, вот так:

{
  "version": "2.0",
  "logging": {
    "fileLoggingMode": "debugOnly",
    "logLevel": {
      // For all functions
      "Function": "Trace",
      // Default settings, e.g. for host
      "default": "Trace"
    }
  }
}

Подробнее о конфигурации можнонайдено здесь

...