客户端.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========================== =========
客户端.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 从列表中删除记录器,所以它不能解决问题