C# 配置nLog.NET Core 3.1,缺少调试消息

C# 配置nLog.NET Core 3.1,缺少调试消息,c#,nlog,asp.net-core-3.1,C#,Nlog,Asp.net Core 3.1,我已经在.net core中查看了nLog的许多配置,所有配置都正常工作,只是我无法获取要记录的调试消息。如果我写了一条信息消息或错误消息,它们就可以正常工作了。因此,这似乎是一个日志级别的问题,但尽管我可能尝试,我似乎无法将级别降低到足以写出调试消息的程度 我也研究过这一点: Nlog.Web.AspNetCore 4.11 .Net核心3.1 以下是我的配置: startup.cs中没有特定的日志记录 program.sc public static void Main(string[]

我已经在.net core中查看了nLog的许多配置,所有配置都正常工作,只是我无法获取要记录的调试消息。如果我写了一条信息消息或错误消息,它们就可以正常工作了。因此,这似乎是一个日志级别的问题,但尽管我可能尝试,我似乎无法将级别降低到足以写出调试消息的程度

我也研究过这一点:

Nlog.Web.AspNetCore 4.11 .Net核心3.1

以下是我的配置:

startup.cs中没有特定的日志记录

program.sc

  public static void Main(string[] args)
    {
        var logger = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config").GetCurrentClassLogger();
        try
        {
            logger.Debug("init main");
            CreateHostBuilder(args).Build().Run();
        }
        catch (Exception exception)
        {
            //NLog: catch setup errors
            logger.Error(exception, "Stopped program because of exception");
            throw;
        }
        finally
        {
            // Ensure to flush and stop internal timers/threads before application-exit (Avoid segmentation fault on Linux)
            NLog.LogManager.Shutdown();
        }
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            })
          .ConfigureLogging(logging =>
          {
              logging.ClearProviders();
              logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
          })
          .UseNLog();  
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"
    throwConfigExceptions="true"
    internalLogLevel="info"
    internalLogFile="c:\temp\Nlog.log">

  <extensions>
    <add assembly="NLog.Web.AspNetCore"/>
  </extensions>
  <targets>
    <target name="database" xsi:type="Database" connectionString="${appsettings:name=ConnectionStrings.applog}" >
      <commandText>
        INSERT INTO [NLog] (
        [ApplicationName],
        [AppUserIdentity],
        [LogDate] ,
        [LogLevel] ,
        [LogSource],
        [LogAssembly] ,
        [LogMessage] ,
        [MachineName] ,
        [DomainUser],
        [CallSite],
        [LogThread] ,
        [LogException]  ,
        [ClientIp]
        )
        VALUES     (
        @ApplicationName,
        @AppUserIdentity,
        @LogDate ,
        @LogLevel ,
        @LogSource,
        @LogAssembly,
        @LogMessage ,
        @MachineName ,
        @DomainUser ,
        @CallSite ,
        @LogThread ,
        @LogException,
        @ClientIp
        );

      </commandText>

      <parameter name="@ApplicationName" layout="${appsettings:name=AppName:default=Missing-Config}" />
      <parameter name="@AppUserIdentity" layout="${aspnet-user-identity}" />
      <parameter name="@LogDate" layout="${date:format=yyyy-MM-dd HH\:mm\:ss.fff}" />
      <parameter name="@LogLevel" layout="${level}" />
      <parameter name="@LogSource" layout="${logger} " />
      <parameter name="@LogAssembly" layout="${assembly-version}" />
      <parameter name="@LogMessage" layout="${message}" />
      <parameter name="@MachineName" layout="${machinename}" />
      <parameter name="@DomainUser" layout="${windows-identity:domain=true}" />
      <parameter name="@CallSite" layout="${callsite}" />
      <parameter name="@LogThread" layout="${threadid}" />
      <parameter name="@LogException" layout="${exception}" />
      <parameter name="@ClientIp" layout="${aspnet-request-ip}" />


      
    </target>
  </targets>

  <rules>
    <logger name="*"  minlevel="Trace" maxlevel="Error" final="true" writeTo="database" />
  </rules>
</nlog>

插入[NLog](
[应用程序名称],
[AppUserIdentity],
[日志日期],
[日志级别],
[日志来源],
[LogAssembly],
[日志信息],
[机械名称],
[域名用户],
[CallSite],
[日志线程],
[日志例外],
[客户端]
)
价值观(
@应用程序名称,
@AppUserIdentity,
@日志日期,
@日志级别,
@LogSource,
@LogAssembly,
@日志信息,
@机械名称,
@域名用户,
@CallSite,
@日志线程,
@LogException,
@客户
);
注入服务中。此调用不会记录,但如果它是_logger.LogInformation(“xx”),则会记录。此ILogger引用是Microsoft.Extensions.Logging.ILogger

     public TaxCalculationService(IUnderwritingRepository repository, ILogger<TaxCalculationService> logger)
        {
            _repository = repository;
            _logger = logger;
        }
        public TaxCalculationResponseDto CalculateTaxes(TaxCalculationRequestDto request)
        {
          
            _logger.LogDebug("calculateTaxes request: " + JsonConvert.SerializeObject(request));
PublicTaxCalculationService(IUnderwritingRepository,ILogger记录器)
{
_存储库=存储库;
_记录器=记录器;
}
公共TaxCalculation响应到CalculateTaxes(TaxCalculation请求到请求)
{
_LogDebug(“calculateTaxes请求:+JsonConvert.SerializeObject(请求));
请尝试升级到,然后将
UseNLog()
更改为使用
RemovelogerFactoryFilter=true
,如下所示:

公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
})
.ConfigureLogging(日志=>
{
logging.ClearProviders();
logging.SetMinimumLevel(Microsoft.Extensions.logging.LogLevel.Trace);
})
.UseNLog(新的NLogAspNetCoreOptions(){RemoveLoggerFactoryFilter=true});
另见:

您可能希望更新NLog LoggingRules以忽略来自Microsoft记录器的噪音:


请尝试升级到,然后将
UseNLog()
更改为使用
RemovelogerFactoryFilter=true
,如下所示:

公共静态IHostBuilder CreateHostBuilder(字符串[]args)=>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder=>
{
webBuilder.UseStartup();
})
.ConfigureLogging(日志=>
{
logging.ClearProviders();
logging.SetMinimumLevel(Microsoft.Extensions.logging.LogLevel.Trace);
})
.UseNLog(新的NLogAspNetCoreOptions(){RemoveLoggerFactoryFilter=true});
另见:

您可能希望更新NLog LoggingRules以忽略来自Microsoft记录器的噪音:



当您查看时,是否记得检查特定于环境的appsettings.json?(例如
appsettings.Development.json
appsettings.Production.json
)是的,我已经看过了。谢谢当您查看时,是否记得检查特定于环境的appsettings.json?(例如
appsettings.Development.json
appsettings.Production.json
)是的,我已经看过了。谢谢,只要我也遵循您提供的链接中的语法,这就行了。因此在Startup.cs中,我添加了“services.AddLogging”(builder=>builder.AddFilter(null,Microsoft.Extensions.Logging.LogLevel.Information))“这似乎有一个缺点。我收到了大量Microsoft.AspNetCore.Mvc*消息。因此,对于2条调试消息,我在日志中收到了很好的60条ish消息。是否有办法在仍然收到调试消息的情况下限制这些消息?@kwcolson98已更新了我关于抑制嘈杂日志的答案。请参阅工作,只要我还遵循您提供的链接中的语法。因此,在Startup.cs中,我添加了“services.AddLogging(builder=>builder.AddFilter(null,Microsoft.Extensions.Logging.LogLevel.Information))“这似乎有一个缺点。我收到了大量Microsoft.AspNetCore.Mvc*消息。因此,对于2条调试消息,我在日志中收到了很好的60条ish消息。是否有方法在仍然收到调试消息的情况下限制这些消息?@kwcolson98更新了我关于抑制嘈杂日志的答案。另请参阅
     public TaxCalculationService(IUnderwritingRepository repository, ILogger<TaxCalculationService> logger)
        {
            _repository = repository;
            _logger = logger;
        }
        public TaxCalculationResponseDto CalculateTaxes(TaxCalculationRequestDto request)
        {
          
            _logger.LogDebug("calculateTaxes request: " + JsonConvert.SerializeObject(request));