在单个解决方案中记录多个项目

时间:2015-04-15 17:42:37

标签: c# visual-studio-2010 log4net log4net-configuration

我有一个解决方案,我需要使用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登录,我缺少什么?

1 个答案:

答案 0 :(得分:-1)

更改您的代码,使其如下所示:

<log4net debug="true">

也许这对你来说有助于解开这个谜团。