如何让NLog停止写入冗余信息?

问题描述 投票:0回答:1

我的

Programm.cs

var logger = LogManager.Setup()
    .RegisterNLogWeb()
    .LoadConfigurationFromFile("nlog.config")
    .GetCurrentClassLogger();

try
{
    var builder = WebApplication.CreateBuilder(args);
    builder.Services.AddControllers(options => { options.Filters.Add<LogResponseFilterAttribute>(); 
    });
    
    builder.Services.AddScoped<LogResponseFilterAttribute>();

    builder.Logging.ClearProviders();
    builder.Logging.SetMinimumLevel(LogLevel.Information);

    builder.Host.UseNLog();

    var app = builder.Build();

    app.UseHttpsRedirection();

    app.UseAuthorization();

    app.MapControllers();

    app.Run();
}
catch (Exception e)
{
    logger.Error(e, "Stopped program because of exception");
    throw;
}
finally
{
    LogManager.Shutdown();
}

我的

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="Error"
      throwExceptions="false"
      internalLogFile="c:\logs\internal-log.txt">

    <variable name="iis_sitename" value="${gdc:item=iis_sitename}"/>
    <variable name="logDirectory" value="c:/logs/${iis_sitename}"/>
    <variable name="logSourceName" value="dpc"/>

    <targets async="true">
        <target xsi:type="File"
                name="jsonFile"
                fileName="${logDirectory}/${logSourceName}-${lowercase:${level}}.jsonl"
                archiveFileName="${logDirectory}/archives/${logSourceName}-${lowercase:${level}}_${date:format=yyyy-MM-dd}.jsonl"
                archiveAboveSize="1000240"
                archiveNumbering="Sequence"
                archiveEvery="Day"
                concurrentWrites="true"
                keepFileOpen="true"
                maxArchiveFiles="1"
                encoding="UTF-8">
            <layout xsi:type="JsonLayout"
                    includeAllProperties="true"
                    maxRecursionLimit="2"
                    suppressSpaces="true">
                <attribute name="timestamp" layout="${longdate}"/>
                <attribute name="message" layout="${message}"/>
            </layout>
        </target>
    </targets>

    <rules>
        <logger name="*" minlevel="Info" writeTo="jsonFile" />
    </rules>
</nlog>

我如何在动作中调用它:

[HttpGet("products")]
    public Task<object?> Get(CancellationToken cancellationToken, [FromQuery] Filter filter)
    {
        _logger.LogInformation("Hello world!");
         ... other stuff
    }

我得到了什么:

我很困惑!这是什么?我可以只拥有我的“Hello world”吗?所有这些智能东西看起来都很酷,可能会用于新一季的“机器人先生”,但我不知道 需要它!我只需要我的“Hello world”!

c# asp.net asp.net-core nlog
1个回答
0
投票

我刚刚将以下规则添加到我的 nlog.config 中:

<rules>
        <logger name="System.*" finalMinLevel="None" />
        <logger name="Microsoft.*" finalMinLevel="None" />
        <logger name="Microsoft.Hosting.Lifetime*" finalMinLevel="None" />
    ```

我使用nlog 5+版本。

© www.soinside.com 2019 - 2024. All rights reserved.