从代码更改 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>
是否可以从应用程序实例调用程序的代码更改端口?还是有其他选择?
是的
,在运行时修改追加器很容易:
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();
}
}