0

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 はロガーをリストから削除するので、問題は解決しません

4

1 に答える 1

0

まったくわかりませんが、 remotingAppender.Close(); を試しましたか?あなたはそれを終えたとき?

于 2013-09-24T08:40:49.913 に答える