Используя NLog, как добавить запятую после каждого сообщения Json, подобного этому?
{ "time": "2022-10-12", "name": "Index", "level": "ERROR", "message": "Hello Logging" }
, <-----
{ "time": "2022-10-12", "name": "Index", "level": "ERROR", "message": "Hello Logging" }
Вот 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"
internalLogFile = "c:\\LogFiles\TasksInternalLog.txt">
<!-- enable asp.net core layout renderers -->
<extensions>
<add assembly = "NLog.Web.AspNetCore"/>
</extensions>
<variable name = "newDoc" value = ","/>
<targets>
<target xsi:type = "File" name = "tasksJsonFile" fileName = "c:\\logFiles\\json-${shortdate}.log">
<layout xsi:type = "JsonLayout" includeAllProperties = "false">
<attribute name = "time" layout = "${longdate}" />
<attribute name = "name" layout = "${callsite}" />
<attribute name = "level" layout = "${level:upperCase=true}"/>
<attribute name = "message" layout = "${message}" />
<!--<layout xsi:type = "TextLayout" includeAllProperties = "false" delimiter = "Comma" withHeader = "false">
${newDoc}
</layout>-->
</layout>
<layout xsi:type = "TextLayout" includeAllProperties = "false" delimiter = "Comma" withHeader = "false">
,
</layout>
</target>
</targets>
<rules>
<logger name = "Microsoft.*" minlevel = "Info" final = "true" />
<logger name = "*" minlevel = "Info" writeTo = "tasksJsonFile" />
</rules>
</nlog>





Вы можете использовать составной шаблон, чтобы включить макет json и простой текстовый макет с ,.
Взгляните на пример: https://github.com/NLog/NLog/wiki/CompoundLayout#from-xml
<target name='file' type='File' fileName='log.txt'>
<layout type='CompoundLayout'>
<layout type='SimpleLayout' text = "myAmazingText: " />
<layout type='JsonLayout'>
<attribute name='time' layout='${longdate}' />
<attribute name='level' layout='${level:upperCase=true}'/>
</layout>
</layout>
</target>
поэтому для вашего случая это будет что-то вроде:
<target xsi:type = "File" name = "tasksJsonFile" fileName = "c:\\logFiles\\json-${shortdate}.log">
<layout type='CompoundLayout'>
<layout xsi:type = "JsonLayout" includeAllProperties = "false">
<attribute name = "time" layout = "${longdate}" />
<attribute name = "name" layout = "${callsite}" />
<attribute name = "level" layout = "${level:upperCase=true}"/>
<attribute name = "message" layout = "${message}" />
</layout>
<layout type='SimpleLayout' text = "," />
</layout>
</target>
точно скопировал образец
Образец, похоже, не решает проблему, указанную в ОП.
не уверен, что понимаю комментарий здесь, вы хотите, чтобы я создал полный xml и передал его пользователю, который задал вопрос. Я предлагаю ему взглянуть на образец, пример составного шаблона добавляет простой текст в начало json, он должен использовать аналогичную стратегию, чтобы добавить запятую после шаблона json... не могли бы вы уточнить?
здесь добавлен дополнительный образец
Мне не нужно делать что-либо еще в это время. Я попробовал это, и это сработало нормально. Спасибо
Не могли бы вы улучшить свой ответ, включив соответствующие части связанного контента на случай, если ссылка перестанет работать в будущем?