Я использую Serilog для входа в локальный файл, и у него есть приятная и простая функция выбора шаблона вывода,
, например:
_logger = new LoggerConfiguration()
.WriteTo.File(
Path.Combine(config.Value.FilePath, config.Value.FileName),
outputTemplate: "[{Timestamp:yyyy-MM-dd HH:mm:ss}] {Message:lj}{NewLine}",
rollingInterval: RollingInterval.Day
).CreateLogger();
И сейчас, что я пытаюсь для этого нужно использовать Serilog для сетевого журналирования, например:
var ip = IPAddress.Parse(config.Value.ServerIp);
_logger = new LoggerConfiguration()
.WriteTo.TCPSink(ip, config.Value.Port)
.CreateLogger();
И если я регистрируюсь так:
var message = new { to_index = "test-index", message = "test-message" };
var json = JsonConvert.SerializeObject(message, Formatting.Indented);
log.Information(json);
Вывод на плате кибана будет выглядеть так:
{"timestamp":"2020-04-11T10:10:58.1110467+02:00","level":"Information","message":"{\r\n \"to_index\": \"test-index\",\r\n \"message\": \"test-message\"\r\n}"}
Хотя я хотел бы, чтобы это был ТОЛЬКО объект, я отправил:
{\"to_index\": \"test-index\",\"message\": \"test-message\"}