【发布时间】:2017-08-01 22:15:30
【问题描述】:
我有一个 WPF 应用程序,它启动一个后台工作程序,即 Asp.Net Core Web API 服务器。
我想将所有事件记录在一个日志文件中。 注意:我也想要 Microsoft 的 ASP.net 核心框架日志记录。 我正在使用 Nlog(第一次)。
代码:
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\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>
在 WPFfile.cs 中:
参考文献: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}";
}
在 Asp.Net Core 中:
参考: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 核心日志。
【问题讨论】:
标签: c# asp.net wpf multithreading nlog