У меня есть код, который выводит интерполированную строку в журнал с NLog.
Вот пример
_logger.LogDebug($"REQUEST {webRequest.RequestUri}", Id)
WebResponse webResponse = await _httpService.SendRequestAsync(webRequest);
var response = ParseResponse(webResponse);
_logger.LogDebug($"RESPONSE {(int)response.StatusCode} {JsonConvert.SerializeObject(response.Body)}", Id);
В этом примере, в первом случае вызова функции _logger.LogDebug , в результате я получаю ожидаемый результат:
2019-04-15 09:27:24.5027 DEBUG e1701b07-d228-4543-a320-3cb1b7f2e4b0 REQUEST http://url/
Но во втором случае ожидаемый результат заключен в дополнительные кавычки.
2019-04-15 09:27:57.2907 DEBUG "e1701b07-d228-4543-a320-3cb1b7f2e4b0 RESPONSE 200 [{...},{...}]"
Вот метод _logger.LogDebug
using NLog;
private static readonly ILogger Logger = LogManager.GetCurrentClassLogger();
public void LogDebug(string message, Guid id)
{
Logger.Debug($"{id.ToString()} {message}");
}
Результат JsonConvert.SerializeObject (response.Body) - это строковое представление массива json, например: [{"key":"value","key":"value"},{"key":"value","key":"value"}]
Вот часть моего Nlog.config
<targets>
<target name="csv" xsi:type="File" fileName="${shortdate}-${level}-services.log">
<layout xsi:type="CSVLayout" delimiter="Tab" withHeader="false">
<column name="time" layout="${longdate}" />
<column name="level" layout="${uppercase:${level}}"/>
<column name="message" layout="${message}" />
</layout>
</target>
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="csv" />
</rules>
Почему я получаю дополнительные кавычки во втором случае икак я могу избежать этого?