【问题标题】:Different NLog Instance In Order to Separate NLog configuration in different config files不同的 NLog 实例为了在不同的配置文件中分离 NLog 配置
【发布时间】:2017-04-20 21:00:22
【问题描述】:

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

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

类似:

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

然后,我想配置子类如下:

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

然后是新水果

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

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

【问题讨论】:

    标签: c# logging configuration config nlog


    【解决方案1】:

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

    一个。创建单独的生活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}/nlog1.config"/>
    
      ...
    </nlog> 
    

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

    【讨论】:

    • 老兄,非常感谢!这帮助我解决了我遇到的另一个问题,我认为我们被 LogManager 困住了,并且真的需要独立配置才能从我的工作线程登录到不同的文件,直到我发现 LogFactory 才意识到这一点答案的宝石。再次感谢你:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 2021-12-08
    • 2015-02-21
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多