如何覆盖默认的nlog配置?

时间:2012-07-10 03:40:24

标签: nlog

我们发布了一个用于日志记录的框架程序集,它在内部使用nlog。我们还将嵌入式nlog配置作为组件中的资源发送,并在启动时读取它(我们的包装器中的静态构造函数,它使用XmlLoggingConfiguration类包装nlog包装器)。

我们现在希望开发人员能够通过外部文件为自己的记录器指定/覆盖其他配置(使用相同的nlog配置文件格式)。

我们可以:

  • 在我们的嵌入式nlog配置文件中引用包含文件?如何解析包含文件的路径?如果我们这样做,包含文件的内容是否会覆盖我们在启动时读取的嵌入式nlog配置的内容?
  • 开发人员可以使用nlog配置部分吗?此部分的内容是否覆盖了我们以编程方式指定的默认配置?

还有其他选择吗?

1 个答案:

答案 0 :(得分:1)

  

如何解析包含文件的路径?

您可以在包含的文件名中使用:

  1. 布局渲染器,例如${baseDir}
  2. nlog variables
  3. 如果生成的文件名不是绝对的,它会与原始NLog配置所在的目录结合使用,但在您的情况下这可能为空,因此您只能使用前2个选项。

      

    包含文件的内容是否覆盖了嵌入式nlog配置的内容?

    不,此内容已添加到嵌入式配置的内容中。

      

    nlog配置部分的内容是否覆盖了我们以编程方式指定的默认配置?

    以编程方式设置配置时,将覆盖之前设置的任何配置,并禁用自动配置发现,包括应用程序配置文件或NLog.config中的配置。

    但是,您可以在设置嵌入值之前首次检查配置是否为空。这将触发自动发现,如果找到任何日志记录配置,返回的值将为非null。