Я использую Nlog с ядром .NET и внедрением зависимостей для регистрации объектов JSON.мои журналы в настоящее время выглядят так: {"log":{"rersourceId": "2"}} {"log":{"rersourceId": "423"}}
, и я хочу, чтобы мои журналы печатались как простые объекты JSON без поля имени сообщения / свойства: {"rersourceId": "2"}{"rersourceId": "423"}
Вот мой файл 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="info"
internalLogFile="C:\\Data\\LogFiles\\ScheduleVisits\\logging_api\\NLog.log">
<extensions>
<add assembly="NLog.Web.AspNetCore"/>
</extensions>
<variable name="LogBaseFolder" value="C:\\Data\\LogFiles\\ScheduleVisits\\logging_api" />
<targets>
<target name="ScheduleVisitsLogAsyncWrapper"
xsi:Type="AsyncWrapper"
batchSize="200"
queueLimit="200000"
timeToSleepBetweenBatches="0">
<target
name="ScheduleVisitsLog"
xsi:type="File"
fileName="${LogBaseFolder}\\${uppercase:${level}}\\${shortdate}.json"
archiveAboveSize="10485760"
archiveEvery="Day"
createDirs="True"
encoding="utf-8"
keepFileOpen="false"
archiveFileName ="${LogBaseFolder}\\Archive\\${uppercase:${level}}\\ScheduleVisitsAll_{#####}.zip"
archiveNumbering="DateAndSequence"
enableArchiveFileCompression="True">
<layout xsi:type="JsonLayout" includeAllProperties="True" suppressSpaces="True">
<attribute name="properties" layout="${json-event-properties}" encode="false"/>
</layout>
</target>
</target>
</targets>
<!-- rules to map from logger name to target -->
<rules>
<logger name="*"
minlevel="Trace"
writeTo="ScheduleVisitsLogAsyncWrapper">
<filters>
<when condition="starts-with('${logger}','Microsoft.')" action="Ignore" />
</filters>
</logger>
</rules>
</nlog>
В моем Program.cs я добавил эти строки в методе 'Main':
var factory = NLog.Web.NLogBuilder.ConfigureNLog("nlog.config");
NLog.Config.ConfigurationItemFactory.Default.JsonConverter = new JsonNetSerializer();
var logger = factory.GetCurrentClassLogger();
мой файл appSettings.json:
{
"Environment": 1,
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Trace",
"System": "Information",
"Microsoft": "Information"
}
}
}
и вот как я регистрируюсьсвойства
_logger.LogInformation("{log}", input);
Я должен добавить сообщение в качестве первого аргумента для LogInformation
и хочу от него избавиться.