繁体   English   中英

不同的 NLog 实例,以便在不同的配置文件中分离 NLog 配置

[英]Different NLog Instance In Order to Separate NLog configuration in different config files

目前,如果我将 LogManager.Configuration 指向不同的配置文件,我将面临 NLog.Configuration 被覆盖的问题。

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

就像是:

FruitType class 有自己的 NLog 实例,它的 NLog.LogManager.Configuration 是从默认的 nlog.config 中读取的。

然后,我想将子类配置为如下内容:

Apple class 实例有自己的 NLog 实例,Apple class NLog.LogManager.Configuration 是从 AppleNLog.config 而不是 nlog.config 中读取的。

然后是新水果

Orange class 实例有自己的 NLog 实例,Orange class 实例 NLog.LogManager.Configuration 是从 OrangeNLog.config 而不是 nlog.config 中读取的。

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

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

一种。 创建单独的活动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();

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

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

  ...
</nlog> 

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM