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のコアログだけが表示されます。