Serilog Timestamp @t не в UT C времени - PullRequest
0 голосов
/ 19 февраля 2020

Я кодирую в C#, и у меня есть файл журнала, созданный с помощью Serilog, записанный в файл и отформатированный в Json с помощью CompactJsonFormatter. Проблема в том, что время не установлено на правильный часовой пояс, оно в UTC + 0. Есть ли способ установить правильный часовой пояс для отметки времени? PS TimeWrap устарела

Пример строки, сгенерированной в файле журнала:

{"@t":"2020-02-19T13:34:55.6398202Z","@mt":"Stringa random {stringToLog}","stringToLog":"this"}

Это метод, который я использую для создания журнала:

screenshot of the source code

1 Ответ

2 голосов
/ 19 февраля 2020

В настоящее время невозможно изменить способ преобразования временной метки в строку с использованием существующего CompactJsonFormatter ... Это с жестким кодом , чтобы всегда получать UtcDateTime, а затем преобразовать его в string.

Если вы хотите изменить это, вам придется реализовать собственную версию CompactJsonFormatter, создав собственный класс, реализующий ITextFormatter, и попросить Serilog использовать это вместо этого.

Вы можете скопировать код CompactJsonFormatter в свою кодовую базу и изменить его в соответствии со своими потребностями.

Затем вы просто переключаетесь на свой собственный форматер вместо того, чтобы использовать по умолчанию :

var logger = new LoggerConfiguration()
    .WriteTo.File(new YourCompactJsonFormatter(), "App.log")
    .CreateLogger();
...