簡體   English   中英

單個解決方案中來自多個項目的日志

[英]Log from multiple projects in single solution

我有一個解決方案,需要使用log4net從不同的程序集進行日志。 解決方案中的第一個項目( PCBClient.cs ,一個Web客戶端)按預期方式記錄,但是下一個項目( WriteUtilities.cs ,后端數據庫功能)根本不記錄。 我遵循了Falafel.com 上的說明以及此SO頁面上后續說明以及DreamInCode.net上的線程。

顯然我缺少了一些東西。

我已經在WriteUtilities中添加了初始項目PCBClient作為參考。 我無法進行對等的操作,因為它會創建循環引用,也許我需要使引用變為另一種方式? 我已經在PCBClient的web.config中創建了一個新的記錄器,並根據log4net附加了所引用程序集的名稱。 常見問題解答:我可以從另一個程序集中加載附加程序嗎? 使用指定的形式:

<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的屬性標記為“如果較新則復制”。

在程序集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和WriteUtilities中的原始日志記錄引用,因此它們都應指向上面的一個(我認為):

//point at logging .dll
//[assembly: log4net.Config.XmlConfigurator(Watch = true)]

我仍然無法從WriteUtilties登錄,我還缺少什么?

更改標簽,使其看起來像:

<log4net debug="true">

也許這將對您解決這個難題有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM