Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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# 如何在.NET核心应用程序中配置NLog_C#_.net Core_Configuration Files_Nlog - Fatal编程技术网

C# 如何在.NET核心应用程序中配置NLog

C# 如何在.NET核心应用程序中配置NLog,c#,.net-core,configuration-files,nlog,C#,.net Core,Configuration Files,Nlog,我正在使用一个名为的库,它需要对NLog进行配置,以便输出其调试和其他信息 本教程显示了使用xml文件的配置 我想使用Microsoft.Extensions.Configuration,并将其指向XML,但它似乎不起作用 以下是我到目前为止的情况: var config = new ConfigurationBuilder().AddXmlFile("app.config", true).Build(); 和配置文件: <?xml version="1.0" encoding="utf

我正在使用一个名为的库,它需要对NLog进行配置,以便输出其调试和其他信息

本教程显示了使用xml文件的配置

我想使用
Microsoft.Extensions.Configuration
,并将其指向XML,但它似乎不起作用

以下是我到目前为止的情况:

var config = new ConfigurationBuilder().AddXmlFile("app.config", true).Build();
和配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <common>
    <logging>
      <factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog20">
        <arg key="configType" value="FILE" />
        <arg key="configFile" value="~/NLog.config" />
      </factoryAdapter>
    </logging>
  </common>
</configuration>

以及nlog配置:

<?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">

  <variable name="logFormat" value="${date:format=yy/MM/dd HH\:mm\:ss} [${logger}].[${level}] ${message} ${exception:format=tostring} "/>

  <targets>
    <target xsi:type="Console" name="console" layout="${logFormat}"/>
    <target xsi:type="File" name ="file" fileName="Gridsum.DataflowEx.Demo.log" layout="${logFormat}" keepFileOpen="true"/>
  </targets>

  <rules>
    <logger name ="Gridsum.DataflowEx*" minlevel="Trace" writeTo="console,file"></logger>
  </rules>
</nlog>

什么都不会输出。。。我这样做对吗?

也许这有助于:

停止使用app.config,而是使用专用的nlog.config(请记住将nlog.config文件配置为“始终复制”)

也许这会有所帮助:


停止使用app.config,而是使用专用的nlog.config(请记住将nlog.config文件配置为“始终复制”)

所有我的nlog代码在Startup.cs中都是这样的。即在配置方法中:

    using NLog.Extensions.Logging;
    using NLog.Web;
    using Nlog;

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        //setup logging
        loggerFactory.AddNLog();
        env.ConfigureNLog("nlog.config");
        app.AddNLogWeb();

        // other unrelated stuff...
    }
对于控制台应用程序,您不需要任何特殊的

using NLog;

public class Engine
{
    private readonly ILogger _logger;

    public Engine()
    {
        _logger = LogManager.GetCurrentClassLogger();
    }

    public async Task SendAsync(OutboundMessageType messageType)
    {
        _logger.Trace($"Entered SendAsync() for message type '{messageType}'.");

        // other stuff here
    }
}

以上只是我项目中的一个随机类。不需要配置代码。我的nlog.config与可执行文件驻留在同一目录中

我的所有nlog代码在Startup.cs中都是这样的。即在配置方法中:

    using NLog.Extensions.Logging;
    using NLog.Web;
    using Nlog;

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        //setup logging
        loggerFactory.AddNLog();
        env.ConfigureNLog("nlog.config");
        app.AddNLogWeb();

        // other unrelated stuff...
    }
对于控制台应用程序,您不需要任何特殊的

using NLog;

public class Engine
{
    private readonly ILogger _logger;

    public Engine()
    {
        _logger = LogManager.GetCurrentClassLogger();
    }

    public async Task SendAsync(OutboundMessageType messageType)
    {
        _logger.Trace($"Entered SendAsync() for message type '{messageType}'.");

        // other stuff here
    }
}

以上只是我项目中的一个随机类。不需要配置代码。我的nlog.config与可执行文件驻留在同一个目录中

@Kirk我读到了这一点,但得出的结论(可能是错误的)是,它无法按照DataFlowEx期望完成nlog配置的方式工作。我错了吗?启用NLog内部调试选项(
)并查看日志中是否有任何内容。@Kirk我读过这篇文章,但得出的结论(可能是错误的)与DataFlowEx期望完成NLog配置的方式不符。我错了吗?启用NLog内部调试选项(
)并查看日志中是否有任何内容。使用此方法会导致:
方法未找到:'System.AppDomainSetup System.s.get_SetupInformation()'。
是否可以为此异常提供调用堆栈?您使用的是什么版本的NLog?使用
Common.Logging.NLog4412
NLog v4.4.12
您可以尝试使用以下库吗。普通的。日志记录。3.4.1和Common.Logging.NLog4412和NLog v4.5-BETA07?成功了!到底是什么问题?出于好奇,是否有一个问题我可以通过阅读来了解它为什么以前不起作用?谢谢使用此方法会导致:
方法未找到:“System.AppDomainSetup System.s.get_SetupInformation()”。
是否可以为此异常提供调用堆栈?您使用的是什么版本的NLog?使用
Common.Logging.NLog4412
NLog v4.4.12
您可以尝试使用以下库吗。普通的。日志记录。3.4.1和Common.Logging.NLog4412和NLog v4.5-BETA07?成功了!到底是什么问题?出于好奇,是否有一个问题我可以通过阅读来了解它为什么以前不起作用?谢谢谢谢,但这不是一个ASP.NET应用程序,只是一个.NET核心应用程序,控制台。从我的控制台应用程序更新。谢谢,但这不是一个ASP.NET应用程序,只是一个.NET核心应用程序,控制台。从我的控制台应用程序更新。