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

标签 c# logging configuration config nlog

目前,如果我将 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 配置。

最佳答案

有两种方法可以实现:

一个。打造独立生活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}/nlog2.config"/>

  ...
</nlog> 

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

关于c# - 不同的 NLog 实例,以便在不同的配置文件中分离 NLog 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40991689/

相关文章:

linux - IRCD配置: authentication using a database table

c# - 如何在 OData C# 驱动程序中支持嵌套的开放式复杂类型?

时间:2018-01-08 标签:c#sql: get auto incrementing id after inserting data

elasticsearch - 与简单的 python 日志记录 + 现有数据库日志表组合相比,使用 ELK 进行日志管理有什么优势?

spring - 为什么我的 logback Daily RollingFileAppender 没有滚动并且仍然附加到一个文件?

python - 为什么 Python 记录器不在 logging.INFO 级别显示信息或调试消息?

configuration - Wildfly 10 CLI 安全域配置

c# - 确保 NHibernate SessionFactory 只创建一次

c# - 自动选择组合框的第一项

c++ - 将 CMake 与同一语言的多个编译器一起使用