2016-05-24 3 views
0

Я только что создал пустое веб-приложение ASP.NET 5, и я хочу использовать NLog для своих журналов. До сих пор я успешно установил NLog и создал публичный статический Logger в классе Startup. В моей папке приложения Я создал файл NLog.config со следующим содержанием:NLog не создает файл журнала

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

В методе Настройки класса запуска Я пытаюсь войти некоторые данные со следующими строками кода:

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

Проект строится успешно, но после его запуска я не вижу никакого файла file.txt.

+0

Быстрая настройка на https://github.com/NLog/NLog.Extensions.Logging – Julian

ответ

0

Обеспечить полный путь к файлу журнала

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

Это NLogConfiguration, который я использовал, и это absoulty работает Fine

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

и на стороне сервера

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

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

Да, я это сделал. Но вы поместили его в класс Startup? – nix86

1

У меня есть нашли возможное решение. После создания пустого проекта ASP.NET 5 вы можете сделать следующее:

1) Откройте файл Startup.cs и добавить следующие usings:

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

Обратите внимание, что для того, чтобы добавить вторые использовать вас должны изменить файл package.json, добавив следующую зависимость:

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

2) в startup.cs файл, который вы должны изменить подпись метода «Настройка», добавив аргументы IHe и ILF. Так что в конечном итоге это будет выглядеть так.

Configure(IApplicationBuilder app, IHostingEnvironment ihe, ILoggerFactory ilf) 

Аргументы IHe и IFG должны использоваться таким образом:

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

3) В папке проекта, что не Wwwroot но его родительской папки, добавьте файл и назовите его " nlog.config». Он может быть заполнен следующим contnent:

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

Теперь, если вы запустите проект и перейдите к C: \ Temp, вы увидите два файла: «NLog-общероссийского .log» и «Nlog-own- .log ". Во втором файле вы увидите сообщение «i am nlog bye bye»