我想将Serilog static List<string<>
事件写入.NET集合,以便将它们包含在用户的报告中。我如何configure the static Log.Logger
写一个类似Warning
的内容?
我看到了Rx Observer in the list of provided sinks,这是唯一一个似乎可以轻松提供.NET对象的版本,还是有一个我错过的明显替代方案?
或者,这是一种愚蠢的方式 - 是否有更好的方法来收集{{1}}个事件以按摩到面向用户的报告中?
答案 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)