2016-12-06 115 views
0

目前我正面临NLog.Configuration覆盖问题,如果我将LogManager.Configuration指向不同的配置文件。不同的NLog实例为了在不同的配置文件中分离NLog配置

是否可以在同一个项目中创建多个NLog实例以防止共享相同的LogManager.Configuration?

喜欢的东西:

FruitType类都有自己的NLOG情况下,其NLog.LogManager.Configuration从默认nlog.config读取。

的话,我想配置子类的东西如下:

苹果类的实例有自己的NLOG实例和苹果类NLog.LogManager.Configuration从AppleNLog.config代替nlog.config阅读。

然后新的水果

橙类的实例有自己的NLOG实例和橙类实例 NLog.LogManager.Configuration从OrangeNLog.config而不是nlog.config阅读。

我想这样做的原因是将nlog规则分成不同的配置文件,而不是默认的nlog.config来微管理nlog配置。

回答

0

有两种方法可以做到这一点:

a。创建单独的生活LogFactory对象并单独配置。

例如

public static class MyLogManager 
{ 
    static public NLog.LogFactory Factory1 = new LogFactory(new XmlLoggingConfiguration("nlogconfig1.xml")); 
    static public NLog.LogFactory Factory2 = new LogFactory(new XmlLoggingConfiguration("nlogconfig2.xml")); 
} 

用法:

var logger1 = MyLogManager.Factory1.GetCurrentClassLogger(); 
//or 
var logger2 = MyLogManager.Factory2.GetCurrentClassLogger(); 

湾较少分离但仍然是模块化配置文件,使用例如<include> nlog.config

<nlog> 
    ... 
    <include file="${basedir}/nlog1.config"/>  
    <include file="${basedir}/nlog1.config"/> 

    ... 
</nlog> 

nlog1.config和nlog2.config包含常规<targets><rules>。但请注意潜在的目标名称冲突。