簡體   English   中英

如何為類庫包含log4net?

[英]How to include log4net for a class library?

我想將日志功能實現到類庫中,類庫本身在web服務中引用。 我嘗試添加app.config並完成所需的一切,但似乎拋出異常時,log4net什么都不做。

我的app.config

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="D:\\mylogfile.txt" />
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="5" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="true" />
      <filter type="log4net.Filter.StringMatchFilter">
        <stringToMatch value="test" />
      </filter>
      <filter type="log4net.Filter.StringMatchFilter">
        <stringToMatch value="error" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline%exception" />
      </layout>
    </appender>
    <root>
      <level value="INFO"/>
      <appender-ref ref="RollingFileAppender"/>
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>

在AssemblyInfo.cs中:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "app.config")]

在LogManager.cs中:

private static readonly ILog Log = log4net.LogManager.GetLogger
            (MethodBase.GetCurrentMethod().DeclaringType);
public static void WriteLog(Exception ex)
{
    Log.Error(ex);
}

你能告訴我什么是錯的嗎? 如何讓log4net為我的類庫工作?

謝謝

在運行時,除非明確聲明,否則始終從主機應用程序使用配置文件。 在這種情況下,web.config正在使用而不是app.cofig。 而是提及一些其他自定義配置文件名,並確保將文件復制到Web服務的虛擬目錄中。 同樣如chibacity所說,確保對日志文件的權限。 最好將它保存在web服務主機的app_data文件夾中。

您可以使用某種注射方式,或者構建一個簡單的注射方式,例如:

public interface ILogger
{
    void LogInfo(string message);
       .
       .
       .
}

然后你只需要注入與該接口匹配的東西,比如log4net等的包裝器。

但是,我認為最正確的是不登錄類庫。 為什么我這么認為是因為庫本身不是應用程序,您的Web服務是這樣的,因此您的Web服務應該決定記錄什么。 如果要記錄異常,請不要在類庫中捕獲它們,並讓您的Web服務處理日志記錄。 這也可以更容易集中日志記錄。

請參閱我對以下問題的回答:

在SDK中使用log4net

它有一個日志配置例程,它將構建一個log4net配置文件的完整路徑。 當你在網絡服務中時,我不會看到你對“app.config”的期望。

還要確保您有權從Web服務寫入“D:\\ mylogfile.txt”。

暫無
暫無

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

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