c# - 在略有差异的应用程序之间共享 NLog 配置

标签 c# nlog

我有多个应用程序共享一个配置文件,该文件设置 NLog 部分看起来像这样

<targets>
     <target name="eventlog" type="EventLog" source="ApplicationX" log="Application"
         layout="${date}: ${message} ${stacktrace}" />
</targets>

我们需要为每个应用程序的唯一区别是更改源

我尝试做的是在顶部主设置中每个应用程序的开始

     var target = ((EventLogTarget) _logger.Factory.Configuration.FindTargetByName("eventLog"));
     target.Source = "Application1";

这似乎对日志输出没有影响。
有没有任何编程方法可以对 NLog 的设置进行这样的调整?

是否有其他方法可以管理 NLog 配置中的小更改,而不必为每个应用程序保留不同版本的完整配置文件?

最佳答案

您应该从 LogManager 而不是记录器的工厂获取 Configuration 实例:

EventLogTarget target = (EventLogTarget)LogManager.Configuration.FindTargetByName("eventlog");
target.Source = "Application1";

有关 NLog 运行时配置的更多信息,您可以在 documentation for NLog Configuration API 中找到

关于c# - 在略有差异的应用程序之间共享 NLog 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10421456/

相关文章:

C# - 在共享命名空间内跨文件使用命名空间

c# - foreach 标识符和闭包

数组中的 C# ComboBox 项

configuration - 使用配置文件部分覆盖/合并标准编程配置

c# - 在运行时在 NLog 中设置 Logger 的 writeTo 属性

c# - 如何设置 JSON 文件来配置 nlogging

c# - NLog v2 中的 AsyncWrapper 和 BufferingWrapper 有什么区别?

c# - 直接 channel 机器人发布问题(机器人框架 V4)

c# - UserControl 与模型的绑定(bind) - "property not found"

c# - 使 NLog.config 文件从 (d :\dev) instead of "\bin\debug\"