我无法配置log4net以按我想要的方式工作。我有一个类库库Library.dll,用于我的应用程序Mine.exe和第三方应用程序Other.exe。我有Mine.exe和Library.dll都使用的另一个类库Util.dll。针对不同dll实例的常见log4net日志记录
Mine.exe和Other.exe是并行运行的,我希望Library.dll的两个实例使用相同的日志文件。它也应该与Mine.exe的日志文件分开。当Library.dll调用时,Util.dll应该记录到Library.dll日志文件,以及从Mine.exe调用Mine.exe日志文件。
编辑:我想这是一个有点难以遵循,这是我多么希望我的工作:
Mine.exe日志Mine.log
Other.exe不记录任何东西(第三方应用程序)
Mine.exe - > Library.dll日志到C:\ Library.log
Other.exe - > Library.dll日志到C:\ Library.log
Mine.exe - > Util.dll日志到Mine.log
Mine.exe - > Library.dll - > Util.dll记录到C:\ Library.log
Other.exe - > Library.dll - > Util.dll记录到C:\ Library.log Other.exe不直接调用Util.dll。
首先我想在Library.dll加载自定义log4net的配置,采用:
log4net.Config.XmlConfigurator.Configure(new FileInfo("Library.log4net.config"));
但是,这导致Mine.exe也记录到日志文件Library.dll。
我然后试图加入以下组件属性在Library.dll:
[assembly: log4net.Config.Repository("Library")]
即保持日志分开,但是随后Util.dll记录到从Library.dll称为即使当Mine.exe日志文件。我想我可以在Mine.dll中使用Util.dll中的Repository(“Util”),Library.dll中的AliasReposity(“Util”,“Library”)和AliasReposity(“Util”,“Mine”),但我实际上有很多该项目中的类库,而不是沿着这条路线走下去。
有关如何使这项工作的任何想法?
/Andreas
让我确保我有这样的直观:您希望Main和Other的库登录到日志文件“ A“,但是我和他们自己可以登录到文件”B“和”C“,并将Util用于任何程序的日志文件中,称为它? – 2011-03-28 20:20:40
你应该检查你的问题。似乎有(至少)文件扩展名(Library.exe与Library.dll)混合。另外,您可能应该考虑从应用程序(即exe)的角度进行日志记录。也就是说,无论所使用的DLL如何,都将单个应用程序中的所有内容记录到单个日志文件中。 Mine.exe +所有的DLL登录到,比如说“Mine.log”。 Other.exe +所有DLL登录到“Other.log”。看起来更直观,但当然这只是我的2克拉。 :-) – 2011-03-29 05:32:38
是的,我得到了扩展混淆,现在修复。我想从Library.exe生成一个通用日志的原因是,它几乎就像一个单独的应用程序,我希望日志交织在一个文件中。在旧的COM时代,我可能已经将它变成了一个进程外服务器而不是一个dll。 – Anlo 2011-03-29 06:43:21