在具有多个AppDomain的应用程序中使用Serilog

时间:2018-01-10 11:15:06

标签: c# .net appdomain serilog

我们遇到以下情况:由于.NET的AppDomain隔离,我们遇到了Serilog的问题:

|App| --> |3rd| --> |Class| --> Log.Debug("...") --> [NOK]
    `-------------> |Class| --> Log.Debug("...") -->  [OK]

 (1)       (2)        (3)             (4)             (5)
  1. 我们在应用的Logger方法中创建了一个全局Main()对象,并将其分配给Log.Logger

  2. 我们调用内部创建新AppDomain 的第三方工具。 (我们无法控制此情况,也无法改变此行为。)

  3. 我们的应用和第三方工具都会创建Class的实例对象。

  4. Class使用Serilog的静态Log类执行记录代码。

  5. Log.Logger在从我们的应用创建的Logger对象访问时引用正确配置的Class,但在{中设置为默认SilentLogger {1}}通过第三方工具创建的对象。

  6. 我想这是预期的行为,因为两个Class对象属于两个不同的AppDomain,静态变量被隔离到它们自己的AppDomain。

    有什么方法可以解决这个问题吗?我们能以某种方式利用Serilog方便的静态Class类吗?除了解决这类问题的Log课程之外,Serilog框架中是否还有其他内容,我们可能错过了?我在#380中发现了一个类似的问题,但没有最终的解决方案,就我所见。

    我们考虑在新的AppDomain中创建一个新的Log对象。但是,这意味着我们在1-2和1-3之间推送到Logger的属性不包含在新Logger的日志事件中。

0 个答案:

没有答案