我的
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”!
我刚刚将以下规则添加到我的 nlog.config 中:
<rules>
<logger name="System.*" finalMinLevel="None" />
<logger name="Microsoft.*" finalMinLevel="None" />
<logger name="Microsoft.Hosting.Lifetime*" finalMinLevel="None" />
```
我使用nlog 5+版本。