【问题标题】:log4net not working on selfhosted wcf servicelog4net 不适用于自托管 wcf 服务
【发布时间】:2014-08-25 15:04:38
【问题描述】:

我使用 wcf 编写了一个 C# 客户端-服务器应用程序。 客户端和服务器工作正常。我将使用 log4net 的日志记录添加到我的 wcf 服务中。

当我在 Visual Studio 中开始我的服务时,日志记录工作正常。但是当我使用我的控制台应用程序来托管我的 wcfservice 时,没有任何记录。 wcfservice 运行正常并且可以访问。

这里是我在 wcfservice 项目的 app.config 中的配置部分:

  <log4net xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:log4net">
<root>
  <level value="INFO"/>
  <appender-ref ref="name="FileAppender"/>
</root>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
  <file value="d:\\_serverLib.log" />
  <appendToFile value="true" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
  </layout>
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="INFO" />
    <levelMax value="FATAL" />
  </filter>
</appender>

以下行被添加到我的 wcfservice 的 assambyinfo.cs 中:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

每个使用 log4net 的类都有其对记录器的引用:

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

我的错在哪里?

【问题讨论】:

    标签: c# wcf service log4net


    【解决方案1】:

    假设您的配置设置正确并且应用程序可以访问,它可能是this as stated in the documentation

    使用属性可以是一种更清晰的方法来定义 应用程序的配置将从中加载。不过值得 注意到属性纯粹是被动的。它们只是信息。 因此,如果您使用配置属性,则必须调用 log4net 允许它读取属性。一个简单的调用 LogManager.GetLogger 将导致调用程序集上的属性 被读取和处理。 因此,必须进行日志记录 在应用程序启动期间尽早调用,并且 肯定是在加载和调用任何外部程序集之前

    所以你需要在加载 WCF 服务之前在控制台应用程序的主程序中调用LogManager.GetLogger(你实际上不需要记录任何东西)

    【讨论】:

    • 这似乎是调用程序会记录而不是 wcf 服务
    • @Demodave 这是关于日志系统的初始化,而不是实际的日志记录
    【解决方案2】:

    如果有人遇到这个问题并且找不到解决方案,我的问题是当我的项目设置为 .NET 4.5.1 时,我从 nuget 添加了 log4net。我不得不将我的项目降级到 .NET 4.5 - 但 log4net 仍在尝试使用 4.5.1。我不得不更改 packages.config 中的值:

    <package id="log4net" version="2.0.3" targetFramework="net45" />
    

    这为我解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      相关资源
      最近更新 更多