2017-05-03 3 views
0

Ich benutze asp.net Kernprojekt mit vollständigen .net Framework 4.6.2 mit NLog.Web.AspNetCore (4.3.1) nuget Paket. Im Folgenden sind meine Konfigurationen.NLog nicht protokollieren (Asp.net Kern mit. Net 4.6.2)

nlog.config

<?xml version="1.0" encoding="utf-8" ?> 
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    autoReload="true" 
    internalLogLevel="Warn" 
    internalLogFile="c:\Logs\internal-nlog.txt"> 
    <!-- define various log targets --> 
<targets> 
    <!-- write logs to file --> 
    <target xsi:type="File" name="allfile" fileName="c:\Logs\nlog-all-${shortdate}.log" 
     layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception:format=stacktrace}" 
     maxArchiveFiles="100" 
     archiveFileName="c:\LogsBackup\nlog-all-${shortdate}.{##}.log" 
     archiveNumbering="DateAndSequence" 
     archiveAboveSize="10000000" 
     archiveDateFormat="yyyyMMdd" /> 
    <target xsi:type="File" name="ownFile-web" fileName="c:\Logs\nlog-own-${shortdate}.log" 
     layout="${longdate}|${logger}|${uppercase:${level}}| ${message} ${exception:format=stacktrace}" /> 
    <target xsi:type="Null" name="blackhole" /> 
</targets> 
<rules> 
    <!--All logs, including from Microsoft--> 
    <logger name="*" minlevel="Trace" writeTo="allfile" /> 
    <!--Skip Microsoft logs and so log only own logs--> 
    <!--<logger name="Microsoft.*" minlevel="Trace" writeTo="blackhole" final="true" />--> 
    <!--<logger name="*" minlevel="Trace" writeTo="ownFile-web" />--> 
</rules> 
</nlog> 

Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
     loggerFactory.AddDebug(); 

     //add nlog 
     //env.ConfigureNLog("nlog.config"); 
     //loggerFactory.ConfigureNLog("nlog.config"); 
     //loggerFactory.AddNLog(); 
     app.AddNLogWeb(); 

     //add identity server authentication 
     //app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions 
     //{ 
     // Authority = "http://localhost:5000", 
     // RequireHttpsMetadata = false, 
     // ApiName = "prismapi" 
     //}); 

     app.UseMvcWithDefaultRoute(); 

     app.UseSwagger(); 
     app.UseSwaggerUI(options => 
     { 
      options.SwaggerEndpoint("/swagger/v1.0/swagger.json", "Prism api version 1"); 
     }); 
    } 

Aus irgendeinem Grund ist es nicht emittierenden Protokolle. Nlog erstellt nicht einmal seine interne Protokolldatei. Interessant, wenn ich env.ConfigureNLog("nlog.config"); auskommentiere, fängt es an, mindestens seine interne Protokolldatei aber dennoch keinen Erfolg mit der tatsächlichen Protokolldatei zu verursachen.

Antwort

1

Wahrscheinlich müssen Sie loggerFactory.AddNLog(); vor app.AddNLogWeb(); in Ihrer Configure Methode auskommentieren.

env.ConfigureNLog("nlog.config"); sollte im Konstruktor gemäß den Beispielen in der Dokumentation sein.

Bitte beachten Sie auch bei How to use Abschnitt schauen in https://github.com/NLog/NLog.Extensions.Logging

Ich mag auch, wie in den Beispielen mit den gleichen Codezeilen starten beraten. Wenn das funktioniert, ändern Sie sie nach Ihren Bedürfnissen.

Hoffe, das hilft.

+0

Es hat geholfen, vielen Dank :) –

Verwandte Themen