Serilog настраиваемый выходной шаблон - PullRequest
1 голос
/ 08 апреля 2020

Я искал пользовательский формат шаблона вывода для ведения журнала

пример шаблона вывода: "{\" time \ ": \" + \ ", \" severity \ ": \" {Level: u} \ ", \" machine \ ": \" {MachineName} \ ", \" x-Correlation-ID \ ": \" {CorrelationID} \ "}"

Первое ожидаемое значение всегда ожидается как Значение «+», если это поле не существует, означает, что оно не заменяет следующее значение свойства ({Level: u}).

Для вывода шаблона выше: {"time":"+ ","severity":"INFORMATION","machine":"xxxxxx", "x-Correlation-ID":"e5b9c851-de56-42d9-b414-9d7108d2ebcf"}

Если первое значение поля кроме значения "+", выведите следующее: {"time": "test", "severity": "{Level: u}", "machine": "xxxxxx", "x-Correlation-ID": "f6133a7e -ea4f-4bde-8200-798d5346d3ce "}

Приемник RollingFileAlternate, используемый для регистрации WriteTo.Asyn c (w => w.RollingFileAlternate (logFilePath.ToString (), outputTemplate: logOutputTimitFileFileSizeFileSizeFileSizeFileSizeTizetesSizeTelateSizeSizeTizeSizeTizeBaseSizeTelateSizeSizeTableSizeTableSizeTableSizeTableFileSizeSizeFileSizeSizeFileSizeSizeTableSizeTable))): -ea4f-4bde-8200-798d5346d3ce"} *1010* *1011* Приемник RollingFileAlternate, используемый для ведения записи : null))

как удалить первое свойство, не влияя на другие свойства шаблона вывода.

1 Ответ

1 голос
/ 16 апреля 2020

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

Вы можете увидеть, как по умолчанию (CompactJsonFormatter.cs и RenderedCompactJsonFormatter.cs) реализованы и адаптируют код для работы так, как вам нужно.

public class YourCustomJsonFormatter : ITextFormatter
{
    public void Format(LogEvent logEvent, TextWriter output)
    {
        // ...
    }
}

Log.Logger = new LoggerConfiguration()
    .WriteTo.Console(new YourCustomJsonFormatter())
    .CreateLogger();
...