我有一个解决方案,我需要使用log4net从不同的程序集进行登录。解决方案中的第一个项目( PCBClient.cs ,一个Web客户端)按预期记录,但下一个项目( WriteUtilities.cs ,后端数据库函数)不记录一点都不我已按照Falafel.com上的说明以及follow-on instructions on this SO page以及DreamInCode.net上的说明进行操作。
显然我错过了什么。
我在WriteUtilities中添加了初始项目PCBClient作为参考。我不能做倒数,因为它会创建一个循环引用,也许我需要让引用走另一条路?我在PCBClient的web.config中创建了一个新的记录器,使用指定的表单为log4net FAQ: Can I load an appender from another assembly?附加了引用程序集的名称:
<appender name="..." type="MyNamespace.MyAppender, MyAssembly">
(我有理由相信在汇编名称之后我不需要.cs):
<appender name="WriteUtility_TransactionLog" type="log4net.Appender.FileAppender, WriteUtilities">
<File value="WriteUtilityTransactions.log"/>
<AppendToFile value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{yyyy-MM-ddTHH:mm:ss} %logger - %message%newline"/>
</layout>
</appender>
在web.config中也创建了对它的引用:
<logger name="WriteUtility_TransactionLog">
<level value="ALL"/>
<appender-ref ref="WriteUtility_TransactionLog"/>
</logger>
然后将PCBClient中的web.config和WriteUtilities中链接的web.config的属性标记为“Copy if newer”。
在程序集WriteUtilities.cs中我添加了:
private static readonly ILog WriteUtilities_TransactionLog = LogManager.GetLogger("WriteUtility_TransactionLog");
在PCBClient项目的AssemblyInfo.cs中,我添加了:
// Log4Net configuration
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Log4Net.config", Watch = true)]
并注释掉了PCBClient和amp;中的原始日志记录引用。 WriteUtilities所以他们都应该指向上面的那个(我认为):
//point at logging .dll
//[assembly: log4net.Config.XmlConfigurator(Watch = true)]
我仍然无法从WriteUtilties登录,我缺少什么?
答案 0 :(得分:-1)
更改您的代码,使其如下所示:
<log4net debug="true">
也许这对你来说有助于解开这个谜团。