C# Serilog自定义输出模板

C# Serilog自定义输出模板,c#,logging,serilog,C#,Logging,Serilog,我正在寻找用于日志记录的自定义输出模板格式 示例输出模板:“{\'time\”:\“+\”,“severity\”:\“{Level:u}\”,“machine\”:“{MachineName}\”,“x-Correlation-ID\”:\“{CorrelationID}” 它总是期望第一个字段值为“+”值,如果该字段不存在,则表示它不会替换下一个属性值({Level:u}) 对于以上模板输出:{“时间”:“+”,“严重性”:“信息”,“机器”:“xxxxxx”,“x-Correlation-

我正在寻找用于日志记录的自定义输出模板格式

示例输出模板:“{\'time\”:\“+\”,“severity\”:\“{Level:u}\”,“machine\”:“{MachineName}\”,“x-Correlation-ID\”:\“{CorrelationID}”

它总是期望第一个字段值为“+”值,如果该字段不存在,则表示它不会替换下一个属性值({Level:u})

对于以上模板输出:
{“时间”:“+”,“严重性”:“信息”,“机器”:“xxxxxx”,“x-Correlation-ID”:“e5b9c851-de56-42d9-b414-9d7108d2ebcf”}

如果第一个字段值不是“+”值,则输出如下:{“时间”:“测试”,“严重性”:“{Level:u}”,“机器”:“xxxxxx”,“x-Correlation-ID”:“f6133a7e-ea4f-4bde-8200-798d5346d3ce”}

RollingFileAlternate接收器用于记录WriteTo.Async(w=>w.RollingFileAlternate(logFilePath.ToString(),outputTemplate:logOutputTemplate,fileSizeLimitBytes:RollingFileSize,retainedFileCountLimit:null))


如何在不影响其他输出模板属性的情况下删除第一个属性。

您可能需要实现一个自定义的
ITextFormatter
,它实现您需要的逻辑,以便创建您想要的相应输出

您可以看到默认值(和)是如何实现的,并根据需要调整代码

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


您好@Caio,谢谢您的评论,自定义ITextFormatter不支持serilog输出模板。@Srini我不确定我是否理解您上面的评论。您使用的哪个接收器不支持
ITextFormatter
Log.Logger = new LoggerConfiguration()
    .WriteTo.Console(new YourCustomJsonFormatter())
    .CreateLogger();