client.cs
RemotingAppender remotingAppender = new RemotingAppender();
remotingAppender.Sink = "tcp://localhost:15642/LoggingSinkInConsoleDaemon";
remotingAppender.BufferSize = 1;
remotingAppender.ActivateOptions();
BasicConfigurator.Configure(remotingAppender);
log.Info("everything is ok!");
サーバー.cs
LogManager.GetRepository().PluginMap.Add(new Plugin.RemoteLoggingServerPlugin("LoggingSinkInConsoleDaemon"));
client.exe は server.exe にログを記録します。すべて問題ありません。client.exe が終了した後、Unlocker.exe を使用します (ここにあります)。client.exe が server.exe によってロックされていることがわかります (つまり、 client.exe は server.exe によって使用されているため、まだ削除していません)、RemotingAppender によって引き起こされたエラーを見つけましたが、解決方法がわかりません。
Remoting は RemotingAppender の要求を処理すると思いますが、client.exe がロックされています。ロックを解除するにはどうすればよいですか?
======================アップデート1========================= =========
client.cs
var repo = LogManager.GetRepository();
var app = repo.GetAppenders().Where(x => x.GetType() == typeof(RemotingAppender)).FirstOrDefault();
var remotingAppender = app as RemotingAppender;
var root = ((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root;
var attachable = root as IAppenderAttachable;
attachable.RemoveAppender(remotingAppender);
上記で試してみましたが、ログが失われます。
私はソースを検索し、RemoveAppender はロガーをリストから削除するので、問題は解決しません