Verdrahtung und injiziert NLog in einem .Net-Core-console-Anwendung

Erstellte ich einen Verbraucher/job, den ich haben läuft als Prozess unter linux in C# geschrieben.

Den Prozess:

  1. Lesen Sie eine Nachricht aus RabbitMQ
  2. Änderungen an der Datenbank
  3. Melden Sie alle Fehler

Alle in der Dokumentation zu nlog über .net core auf aspnet-core. Wenn ich versuche zu bekommen eine ILogger Umsetzung, gibt Sie null zurück.

Hier ist eine Ausnahme von der Verdrahtung und Verwendung:

static void ConfigureServices()
{
        string environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");

        var builder = new ConfigurationBuilder()
             .SetBasePath(Path.Combine(AppContext.BaseDirectory))
             .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
             .AddJsonFile($"appsettings.{environment}.json", optional: true);

        var services = new ServiceCollection();

        Configuration = builder.Build();

        [...]

        services.AddLogging();

        ServiceProvider = services.BuildServiceProvider();

        var loggerFactory = ServiceProvider.GetService<ILoggerFactory>();
        loggerFactory.AddNLog();
}

static void Main(string[] args)
{
    ConfigureServices();

    var logger = ServiceProvider.GetService<NLog.ILogger>();

    logger.Debug("Logging");

    [...]
}

Nicht verwechselt werden mit der Umgebungsvariable ASPNETCORE_ENVIRONMENT; es werden nur verwendet, um zu bestimmen, welche appsettings.json zu verwenden.

Habe ich basiert mein code auf dieser Problem melden.

Schließlich sind das die Pakete, die ich derzeit installiert haben.

<ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="1.1.2" />
    <PackageReference Include="NLog" Version="5.0.0-beta09" />
    <PackageReference Include="NLog.Extensions.Logging" Version="1.0.0-rtm-beta5" />
    <PackageReference Include="Npgsql" Version="3.2.4.1" />
    <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="1.1.0" />
  </ItemGroup>
  • Beheben Microsoft.Extensions.Logging.ILogger statt NLog.ILogger.
  • nicht, dass geben Sie mir nur die msft-logger und route alle meine logs durch msft Protokollierung?
  • Tatsächlich habe ich gerade getestet, und logger ist immer noch null.
  • meine schlecht, ich meinte ILogger<T>.
  • und ja, erhalten Sie eine generische msft logger. Im Allgemeinen ist es gut wegen dem code hängt nicht von konkreten logger-Implementierung. Sie befestigen konnte, und ersetzen Sie es in jeder Zeit.
InformationsquelleAutor Matt R | 2017-06-30
Schreibe einen Kommentar