【问题标题】:Using NLog in multithreaded environment [closed]在多线程环境中使用 NLog [关闭]
【发布时间】: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


    【解决方案1】:

    嗯! 愚蠢的错误,我没有在 nlog.config 文件中将“复制到输出目录”设置为“始终复制”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多