1

我有 2 个服务具有 log4net 引用和 XmlConfigurator 设置为在 AssemblyInfo.cs 中观看。

如果我在我的本地机器上运行这两个服务,它们都是从单独的目录运行的,其中 Copy Local 设置为 Log4Net dll。两种服务都可以正常记录。

当我将服务推送到生产环境时,它们都位于同一个目录中(我对此没有发言权),我看到的行为很奇怪。如果启动了一项服务,它会正常记录,但另一项服务根本不会记录。陌生人,如果我将它们都关闭并启动第二个,它记录正​​常,但第一个不记录。

我假设这些服务一次只能记录一个,但这似乎没有任何意义,因为它们是独立的服务。

有谁知道这里会发生什么?

4

2 回答 2

1

并不是说您要即时更改 .dll 文件,而是您可能希望考虑使用 Shadow Copy 服务加载 log4net .dll。我从这个答案中得到了想法:https ://stackoverflow.com/a/226589/151234

可以在这里找到一些有用的提示。它类似于 ASP.NET 在您放入新的 .dll 文件时的工作方式。

于 2013-08-16T18:10:16.620 回答
1

看起来第一个进程正在锁定 DLL 并阻止另一个进程将相同的文件加载到其应用程序域中。只是为了好玩,您是否尝试过复制 DLL,更改名称,然后让第二个服务引用其他文件?也许是这样的:

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net2nd" />
于 2013-08-16T17:44:53.397 回答