我無法配置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