Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NLog似乎忽略了.NET Core 3.1 Windows服务中的配置文件位置_C#_Nlog - Fatal编程技术网

C# NLog似乎忽略了.NET Core 3.1 Windows服务中的配置文件位置

C# NLog似乎忽略了.NET Core 3.1 Windows服务中的配置文件位置,c#,nlog,C#,Nlog,类型:Bug NLog版本:4.7.2 NLog.Web/NLog.Web.AspNetCore版本:4.9.2 NLog.Extensions.Logging版本:不适用 平台:.NET核心3.1 当前NLog配置xml或C(如果相关) <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

类型:Bug

NLog版本:4.7.2

NLog.Web/NLog.Web.AspNetCore版本:4.9.2

NLog.Extensions.Logging版本:不适用

平台:.NET核心3.1

当前NLog配置xml或C(如果相关)

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        autoReload="true"
        internalLogLevel="Warn"
        internalLogFile="internal.txt">
  <extensions>
    <!--enable NLog.Web for ASP.NET Core-->
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>

  <!-- define various log targets -->
  <targets>
    <target xsi:type="File"
            name="allOutput"
            fileName="${startupdir}\logs\SkyJack-Agent-All-${shortdate}.log"
            layout="${longdate} ${logger} ${uppercase:${level}} ${message} ${exception}" />
    <target xsi:type="File"
            name="ourOutput"
            fileName="${startupdir}\logs\SkyJack-Agent-OurOutput-${shortdate}.log"
            layout="${longdate} ${logger} ${uppercase:${level}} ${message} ${exception}" />
    <target xsi:type="File"
            name="errorsOnly"
            fileName="${startupdir}\logs\SkyJack-Agent-ErrorsOnly-${shortdate}.log"
            layout="${longdate} ${logger} ${uppercase:${level}} ${message} ${exception}" />
    <target name="console" xsi:type="ColoredConsole" layout="${longdate} ${pad:padding=5:inner=-${level}-} ${message}"
                useDefaultRowHighlightingRules="false" >
      <highlight-row condition="level==LogLevel.Trace" foregroundColor="Gray" />
      <highlight-row condition="level==LogLevel.Debug" foregroundColor="DarkGray" />
      <highlight-word text="-Info-"  foregroundColor="DarkGreen" />
      <highlight-word text="-Warn-"  foregroundColor="DarkYellow" />
      <highlight-word text="-Error-"  foregroundColor="DarkMagenta" />
      <highlight-word text="-Fatal-"  foregroundColor="DarkRed" backgroundColor="White"/>
    </target>
  </targets>

  <rules>
    <!--All logs, including from Microsoft-->
    <logger name="*" minlevel="Debug" writeTo="console" />
    <logger name="*" minlevel="Trace" writeTo="allOutput" />
    <logger name="*" minlevel="Error" writeTo="errorsOnly" />    

    <!--Skip Microsoft logs - no writeTo attribute-->
    <logger name="Microsoft.*" minlevel="Trace" final="true" />
    <logger name="*" minlevel="Trace" writeTo="ourOutput" />
  </rules>
</nlog>
和具有以下内容的根目录:

                builder.UseWindowsService().UseContentRoot(pathToContentRoot);
至少在一开始,这似乎有效,并生成一些日志输出,足以看到我正在成功设置内容根目录:

2020-05-28 15:42:20.5932 SkyJack.Agent.Program INFO ... Initializing SkyJack Agent with content root G:\MSGPS2\SkyJack\SkyJack\src\SkyJack.Agent\bin\Release\netcoreapp3.1\publish... 
2020-05-28 15:42:20.6373 SkyJack.Agent.Program TRACE Entering CreateWebHostBuilder() 
2020-05-28 15:42:20.8023 SkyJack.Agent.Program TRACE Returned from CreateWebHostBuilder() 
2020-05-28 15:42:20.8023 SkyJack.Agent.Program TRACE Entering builder.Build() 
2020-05-28 15:42:20.9446 SkyJack.Agent.Program TRACE Returned from builder.Build() 
但最终,它抛出了一个异常:

Log Name:      Application
Source:        ServerManagerAgent
Date:          5/28/2020 3:54:04 PM
Event ID:      6
Task Category: None
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      HPZEE.redmond.corp.microsoft.com
Description:
Category: Microsoft.AspNetCore.Hosting.Diagnostics
EventId: 6

Application startup exception

Exception: 
System.IO.FileNotFoundException: Failed to load NLog LoggingConfiguration. Searched the following locations:
- C:\WINDOWS\TEMP\.net\ServerManagerAgent\31dyvwga.rkl\nlog.config

File name: 'nlog.config'
   at NLog.LogFactory.LoadConfiguration(String configFile, Boolean optional)
   at NLog.LogFactory.LoadConfiguration(String configFile)
   at NLog.LogManager.LoadConfiguration(String configFile)
   at NLog.Web.NLogBuilder.ConfigureNLog(String configFileName)
   at WebAppService.Startup.Configure(IApplicationBuilder app)
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
   at Microsoft.Extensions.DependencyInjection.AutoRegisterMiddleware.<>c__DisplayClass4_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)

Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
  <System>
    <Provider Name="ServerManagerAgent" />
    <EventID Qualifiers="0">6</EventID>
    <Version>0</Version>
    <Level>2</Level>
    <Task>0</Task>
    <Opcode>0</Opcode>
    <Keywords>0x80000000000000</Keywords>
    <TimeCreated SystemTime="2020-05-28T22:54:04.0041305Z" />
    <EventRecordID>61154</EventRecordID>
    <Correlation />
    <Execution ProcessID="0" ThreadID="0" />
    <Channel>Application</Channel>
    <Computer>HPZEE.redmond.corp.microsoft.com</Computer>
    <Security />
  </System>
  <EventData>
    <Data>Category: Microsoft.AspNetCore.Hosting.Diagnostics
EventId: 6

Application startup exception

Exception: 
System.IO.FileNotFoundException: Failed to load NLog LoggingConfiguration. Searched the following locations:
- C:\WINDOWS\TEMP\.net\ServerManagerAgent\31dyvwga.rkl\nlog.config

File name: 'nlog.config'
   at NLog.LogFactory.LoadConfiguration(String configFile, Boolean optional)
   at NLog.LogFactory.LoadConfiguration(String configFile)
   at NLog.LogManager.LoadConfiguration(String configFile)
   at NLog.Web.NLogBuilder.ConfigureNLog(String configFileName)
   at WebAppService.Startup.Configure(IApplicationBuilder app)
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.ConfigureBuilder.&lt;&gt;c__DisplayClass4_0.&lt;Build&gt;b__0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.&lt;&gt;c__DisplayClass13_0.&lt;UseStartup&gt;b__2(IApplicationBuilder app)
   at Microsoft.Extensions.DependencyInjection.AutoRegisterMiddleware.&lt;&gt;c__DisplayClass4_0.&lt;Configure&gt;b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.&lt;&gt;c__DisplayClass0_0.&lt;Configure&gt;g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
   at Microsoft.AspNetCore.HostFilteringStartupFilter.&lt;&gt;c__DisplayClass0_0.&lt;Configure&gt;b__0(IApplicationBuilder app)
   at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
</Data>
  </EventData>
</Event>
WebAppService.Startup.Configure再次调用NLog.Web.NLogBuilder.ConfigureNLog,可能只是使用NLog.config,而不是我首先传入的location或LoggerConfiguration对象

有没有办法让它使用我已经指定并加载的位置或配置?

我让它使用:

NLog.LogManager.LogFactory.setCandidateConfigFilePaths新列表{${Path.CombinepathToContentRoot,NLog.config}; var logger=NLog.Web.NLogBuilder.ConfigureNLognlog.config.GetCurrentClassLogger; 我让它与:

NLog.LogManager.LogFactory.setCandidateConfigFilePaths新列表{${Path.CombinepathToContentRoot,NLog.config}; var logger=NLog.Web.NLogBuilder.ConfigureNLognlog.config.GetCurrentClassLogger;
我认为这个错误报告应该属于已经存档的。我认为这个错误报告应该属于已经存档的。