2016-05-24 7 views
0

Ich habe gerade eine leere ASP.NET 5 Web-Anwendung erstellt und ich möchte NLog für meine Protokolle verwenden. Bisher habe ich NLog erfolgreich installiert und einen öffentlichen statischen Logger in der Startup-Klasse erstellt. In meiner Bewerbungsmappe habe ich die NLog.config Datei mit folgendem Inhalt erstellt:NLog erstellt keine Protokolldatei

<?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"> 
    <targets> 
     <target name="logfile" xsi:type="File" fileName="file.txt" /> 
    </targets> 
    <rules> 
     <logger name="*" minlevel="Info" writeTo="logfile" /> 
    </rules> 
</nlog> 

Im Configure Methode der Startup-Klasse versuche ich einige Daten mit den folgenden Zeilen Code zu protokollieren:

logger.Warn("foo1"); 
logger.Debug("foo2"); 

Das Projekt wird erfolgreich erstellt, aber nachdem ich es ausgeführt habe, sehe ich keine Datei.txt.

+0

Quick-Setup ist bei https://github.com/NLog/NLog.Extensions.Logging – Julian

Antwort

0

Geben vollständigen Pfad für Protokolldatei

<?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"> 

    <!-- 
    See http://nlog-project.org/wiki/Configuration_file 
    for information on customizing logging rules and outputs. 
    --> 
    <targets> 
    <!-- add your targets here --> 
    <target name="asyncFile" xsi:type="AsyncWrapper"> 
     <target name="logfile" xsi:type="File" fileName="C:\Log.txt" layout="${longdate} ${callsite} ${level} ${message} ${newline}" /> 
    </target> 
    <!-- 
    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log" 
      layout="${longdate} ${uppercase:${level}} ${message}" /> 
    --> 
    </targets> 

    <rules> 
    <!-- add your logging rules here --> 
    <logger name="*" minlevel="Info" writeTo="asyncFile" /> 
    <!-- 
    <logger name="*" minlevel="Trace" writeTo="f" /> 
    --> 
    </rules> 
</nlog> 
0

Dies ist die NLogConfiguration ist, die ich verwendet habe und es ist absoulty adaequat

<?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"> 
     <targets > 
    <target xsi:type="File" name="logfile" 
      fileName="${basedir}/logs/YourFileName.log" 
      layout="${longdate} ${level:uppercase=true:padding=5} ${gdc:item=hostname} ${gdc:item=useremail} (${logger} - ${mdc:item=actionname}) ${message} ${exception:format=tostring}" 
      archiveEvery="Day" 
      archiveFileName ="${basedir}/logs/YourFileName.${date:format=yyyy-MM-dd HH.mm}.{#}.log" 
      archiveNumbering ="Sequence" 
      maxArchiveFiles="30" 
      fileAttributes="Compressed"> 
    </target> 
     </targets> 
     <rules> 
     <logger name="*" minlevel="Debug" writeTo="logfile"> 
     </logger> 
     </rules> 
    </nlog> 

und auf Server-Seite

public class YourClassName 
{ 
    private static Logger log = LogManager.GetCurrentClassLogger(); 

    public void YourMethodName() 
    { 
     try 
     { 
      log.Info("Success"); 
     } 
     catch(Exception Ex) 
     { 
     log.Info("Exception"+ex); 
     } 
     } 
    } 
+0

Ja, ich habe das getan. Aber hast du es in die Startup-Klasse gebracht? – nix86

1

Ich habe eine mögliche Lösung gefunden. eine ASP.NET 5 leeres Projekt Nach dem Erstellen können Sie wie folgt vorgehen:

1) Öffnen Sie die Startup.cs Datei und fügen Sie die folgenden usings:

using Microsoft.Extensions.Logging; 
using NLog.Framework.Logging; 

Beachten Sie, dass, um die zweite mit den Sie hinzufügen haben die package.json-Datei zu ändern, indem Sie die folgende Abhängigkeit hinzu:

"NLog.Framework.logging": "1.0.0-rc1-final" 

2) In dem startup.cs Datei, die Sie, indem die Argumente IHE und ilf die Unterschrift der „Configure“ Methode ändern müssen. Also wird es irgendwann so aussehen.

Configure(IApplicationBuilder app, IHostingEnvironment ihe, ILoggerFactory ilf) 

Die Argumente IHE und IFG sind auf diese Weise verwendet werden:

ilf.AddNLog(); 
ihe.ConfigureNLog("nlog.config"); 
ILogger logger = ilf.CreateLogger(GetType().Namespace); 
logger.LogInformation("i am nlog bye bye"); 

3) im Projektordner, das ist nicht wwwroot aber übergeordneten Ordner, fügen Sie eine Datei aus und nennen es " 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:\temp\internal.txt"> 


    <!-- define various log targets --> 
    <targets> 
    <!-- write logs to file --> 
    <target xsi:type="File" name="allfile" fileName="c:\temp\nlog-all-${shortdate}.log" 
       layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" /> 

    <target xsi:type="File" name="ownFile" fileName="c:\temp\nlog-own-${shortdate}.log" 
       layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" /> 

    <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" /> 
    </rules> 
</nlog> 

Nun, wenn Sie das Projekt ausführen und gehen Sie zu: C: Es kann mit dem folgenden contnent gefüllt werden \ temp Sie zwei Dateien sehen: „nlog-all-.log“ und „nlog-Eigen- .log ". In der zweiten Datei sehen Sie die Nachricht "ich bin nlog tschüss"