从代码更改 app.config 追加程序

本文关键字:config 追加 程序 app 代码 | 更新日期: 2023-09-27 18:30:55

我有一个调用应用程序实例的 GUI。每个应用程序都使用 log4net 根记录器。根记录器从 app.config 获取追加程序。每个app.config都包含TCP附加器 - 我写的。当 im 尝试上升多个应用程序实例时,由于 tcp 追加程序正在使用重复的端口,问题开始。

我的 app.config 中的 log4net 部分如下所示:

<log4net>
   <root>
     <level value="All" />
     <appender-ref ref="TCPAppender" />
   </root>
   <appender name="TCPAppender" type="LogSender.TCPAppender,LogSender">
      <Ip value="127.0.0.1"/>
      <Port value="8183"/>
      <layout type="log4net.Layout.PatternLayout">
         <conversionPattern value="%d %-5p [%t] %c - %m%n" />
      </layout>
   </appender>
</log4net>

是否可以从应用程序实例调用程序的代码更改端口?还是有其他选择?

从代码更改 app.config 追加程序

是的

,在运行时修改追加器很容易:

public static void SetPort(int port)
{
    Hierarchy logHierarchy = log4net.LogManager.GetRepository() as Hierarchy;
    if (logHierarchy == null) return; // not configured yet
    var appender = logHierarchy.GetAppenders().OfType<TCPAppender>().SingleOrDefault();
    if (appender != null)
    {
        appender.Port = port;
        appender.ActivateOptions();
    }
}