如何将Serilog事件写入.NET集合?

时间:2016-03-31 08:06:15

标签: serilog

我想将Serilog static List<string<>事件写入.NET集合,以便将它们包含在用户的报告中。我如何configure the static Log.Logger写一个类似Warning的内容?

我看到了Rx Observer in the list of provided sinks,这是唯一一个似乎可以轻松提供.NET对象的版本,还是有一个我错过的明显替代方案?

或者,这是一种愚蠢的方式 - 是否有更好的方法来收集{{1}}个事件以按摩到面向用户的报告中?

2 个答案:

答案 0 :(得分:3)

class CollectionSink : ILogEventSink {
    public ICollection<LogEvent> Events { get; } = new ConcurrentBag<LogEvent>();

    public void Emit(LogEvent le) {
        Events.Add(le);
    }
}

var col = new CollectionSink();
Log.Logger = new LoggerConfiguration()
    .WriteTo.Sink(col, LogEventLevel.Warning)
    .CreateLogger();

// read col.Events....

不确定这个是否会进行类型检查,但这基本上就是我几次完成它的方式。

答案 1 :(得分:1)