我收到错误消息,"错误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();
}
}
答案 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>