Serilog控制文件接收器的输出格式

时间:2018-11-21 10:34:54

标签: serilog

因此,在这里我只提供一些背景信息,我们使用Serilog,并使用各种接收器,包括我们自己的接收器。

对于大多数接收器,我们添加了用于驱动逻辑的额外属性,例如路由/过滤等

所以对于我们来说,给定的日志语句可能看起来像这样

public class SomeClass
{
    public String Name { get; set; }
    public string AppType { get; set; }
}

var loggingEnvironment = new SomeClass()
{
    Name = "foo",
    AppType = "test",

};

Logger.Error("{Category} {Message} {@LoggingEnvironment}", LogCategory.BUS, "Oh no its gone bad jim", loggingEnvironment);

在需要LoggingEnvironment属性的地方,一路穿越MOST的所有接收器。

但是对于文件接收器输出,我们看看是否

2018-11-21 10:30:21.332 [ERR] BUS "Oh no its gone bad jim" SomeClass { Name: "foo", AppType: "test" } 

我们希望文件书面文字仅仅是

2018-11-21 10:30:21.332 [ERR] BUS "Oh no its gone bad jim"

从Serilog https://github.com/serilog/serilog/wiki/Formatting-Output阅读本节的更多内容,它讨论Message的格式化程序。

  

Message-日志事件的消息,以纯文本形式呈现。 :l格式说明符切换字符串引用,而:j对所有嵌入式结构化数据使用JSON样式呈现。

但是由于这个额外的属性实际上并不是消息的一部分,因此我认为文档的这一部分不适用。

将Serilog.Sinks.File的所有代码都带入我们自己的代码库中,是否有办法摆脱写入到接收器输出中的这个(或任何其他属性)值?

0 个答案:

没有答案