'LogManager'是.LogManagers之间的模糊引用

时间:2012-11-13 23:36:31

标签: c# logging nlog common.logging

我收到错误消息,"错误19' LogManager'是' Common.Logging.LogManager'之间的模糊参考。和' NLog.LogManager'"。

在C#2008应用程序中,我尝试将nlog开源日志记录工具添加到已使用从以下位置获取的common.logging的应用程序:http://netcommon.sourceforge.net

我添加了对NLog文件的引用,我已将Nlog添加到using语句中。

问题是这两个工具都使用一个名为' LogManager的对象。

因此,您能告诉我如何解决我的问题,以便我可以使用两个Logmanagers。

以下是我列出的代码:                                                            的xmlns:=的xsi" HTTP://www.w3.org/2001/XMLSchema-instance">                                     

   using System;
     using System.Collections.Generic;
     using System.Linq;
     using System.Text;
     using Common.Logging;
     using sample;
     using System.Configuration;
     using System.Xml.Linq;  
     using NLog;

namespace sample
{
  public class Etest
  {
    private static Logger logger = LogManager.GetCurrentClassLogger(); 
    private static ILog log = LogManager.GetCurrentClassLogger();
  }
}

2 个答案:

答案 0 :(得分:5)

您只需要确保调用符合条件。

public class Etest
{
   private static Logger logger = NLog.LogManager.GetCurrentClassLogger(); 
   private static ILog log = Common.Logging.LogManager.GetCurrentClassLogger();
}

答案 1 :(得分:0)

您可以通过using指令为其中一个定义别名,或使用全名。

但是如果您使用Common.Logging,我认为您不需要引用NLog。因为Common.Logging库引入了一个简单的抽象,允许您在运行时选择特定的日志记录实现。所以,你的代码应该只依赖于Common.Logging库,而不是像log4net或NLog这样的其他日志系统:

using Common.Logging; // only this library is used
...
ILog log = LogManager.GetCurrentClassLogger();

并将Common.Logging配置为使用NLog:

<configuration>
  <configSections>
    <sectionGroup name="common">
      <section name="logging" 
               type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>    
    <section name="nlog" 
             type="NLog.Config.ConfigSectionHandler, NLog"/>
  </configSections>

  <common>
    <logging>
      <factoryAdapter type="Common.Logging.NLog.NLogLoggerFactoryAdapter, Common.Logging.NLog">
        <arg key="configType" value="INLINE" />
      </factoryAdapter>
    </logging>
  </common>

  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="console" xsi:type="Console" 
              layout="${date:format=HH\:MM\:ss} ${logger} ${message}" />
    </targets>
    <rules>
      <logger name="*" minlevel="Debug" writeTo="console" />
    </rules>
  </nlog>
</configuration>