1

我收到错误消息,“错误 19 'LogManager' 是 'Common.Logging.LogManager' 和 'NLog.LogManager' 之间的模糊引用”。

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

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

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

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

以下是我在下面列出的代码: 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();
  }
}
4

2 回答 2

6

你只需要确保调用是合格的。

public class Etest
{
   private static Logger logger = NLog.LogManager.GetCurrentClassLogger(); 
   private static ILog log = Common.Logging.LogManager.GetCurrentClassLogger();
}
于 2012-11-13T23:41:15.910 回答
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> 
于 2012-11-13T23:42:41.773 回答