如何覆盖默认的nlog配置?

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

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

我们可以吗:

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

还有其他选择吗?

最佳答案

How is the path of the include file resolved?

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

>布局渲染器,例如${baseDir},
> nlog variables.

如果生成的文件名不是绝对的,则它与原始NLog配置所在的目录组合,但在您的情况下可能为空,因此您只能使用前2个选项.

does the content of the include file override the content of the embedded nlog configuration?

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

Does the content of nlog configuration section override the default configuration we have specified programmatically?

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

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

转载注明原文:如何覆盖默认的nlog配置? - 代码日志