0

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

4

1 回答 1

0

我完全不确定,但您是否尝试过 remotingAppender.Close(); 当你完成它?

于 2013-09-24T08:40:49.913 回答