Log4Net 和奥尔良

Log4Net and Orleans

我想知道在 Microsoft Orleans 中使用 log4net 的最佳做法是什么? 应该在哪里初始化?

在几乎所有的 Orleans 示例中,都使用静态 class 作为对象创建的工厂。 Log4net 使用相同的结构来创建 ILog classes。没有理由使用或以标准推荐方式之外的其他方式执行此操作。

我认为初始化每个筒仓静态变量的最佳位置是 Silo Bootstrap

请注意,奥尔良配置了一个记录器,您可以通过调用 this.GetLogger().

获取它。

可以定义一个继承自 ILogConsumer 的记录器,并通过调用将其添加到日志接收器的集合中 Orleans.Runtime.TraceLogger.LogConsumers.Add().

<编辑 2015-07-16>: 这是在 Orleans Gitter channel again, where the following advice 中发表的,由核心团队成员提供:

we publish to .NET Trace and you can ad new listeners to it. that is actual the best way to do it, even without touching Orleans.Runtime.TraceLogger.LogConsumers. just work with .NET TRace, with usual tools and config. unrelated to Orleans. we just publish into Trace.

此处对另一个 Whosebug post Logging best practices, in which Sly Gryphon 的一个补充说明相当详尽地遍历了跟踪基础结构。