2017-08-01 230 views
0

WPFアプリケーションがあります。これは、バックグラウンドワーカー、つまりAsp.Net Core Web APIサーバーを起動します。マルチスレッド環境でNLogを使用する

すべてのイベントを1つのログファイルに記録します。 注:MicrosoftからのASP.netコアフレームワークロギングも必要です。 私はこのためにNlog(初めて)を使用しています。

コード:

nlog.configファイル:

WPFfile.csで
<?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\TestSimLogs\nlog-all-${shortdate}.log" 
       layout="${longdate}|${logger}|${uppercase:${level}}|${message} ${exception}" concurrentWrites="true" keepFileOpen="true"/> 

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

    <target xsi:type="Null" name="blackhole" /> 
    </targets> 

    <rules> 
    <!--All logs, including from Microsoft--> 
    <logger name="*" minlevel="Trace" writeTo="allfile" /> 
    </rules> 
</nlog> 

参考文献:Nlog

private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); 

//lots of code 

private void Button_StartServer(object sender, RoutedEventArgs e) 
     { 
      Logger.Info($"Started Server in mode {mode}"); 

      // logic 
      WebSocket_Worker.RunWorkerAsync("WS begin"); 
      WebAPI_Worker.RunWorkerAsync("WebAPI begin"); 

      Status = $"Server Started in mode {mode}"; 
     } 
01 Asp.Netコア内

参考文献:Nlog.Extensions.Logging、Nlog.Web.AspNetCore

Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
     { 
      loggerFactory.AddNLog(); 
      app.AddNLogWeb(); 
      env.ConfigureNLog("./../../nlog.config");  
      app.UseMiddleware_Authorization(); 
      app.UseMvc(); 
     } 

問題: ログファイルが予期しないものです。ログファイルには、asp.netのコアログだけが表示されます。

答えて

1

Huh! 間違えて、nlog.configファイルで "Copy To Output Directory"を "Copy Always"に設定しませんでした。

関連する問題