6

IPython 並列を使用するときにログを設定しようとしています。具体的には、ログ メッセージをエンジンからクライアントにリダイレクトしたいと考えています。IPython.parallelのように、各エンジンが独自のログ ファイルに個別にログを記録するのではなく、独自のログをエンジン ログに書き込むことはできますか? 、私は次のようなものを探しています

IPython コード ベースのレビューに基づいて、これを行う方法は zmq.log.hander.PUBHandler をログ モジュールに登録することであるという印象を受けました (iploggerapp.py のドキュメントを参照)。私はこれをさまざまな方法で試しましたが、どれもうまくいかないようです。また、IPython.parallel.util を介してロガーを登録しようとしました。connect_engine_logger ですが、これも何もしていないようです。

アップデート

私はこの問題についていくつかの進歩を遂げました。ipengine_config c.IPEngineApp.log_url で指定すると、IPython アプリケーションのロガーには適切な EnginePubHandler が含まれます。私はこれを経由してチェックしました

%%px
from IPython.config import Application
log = Application.instance().log 
print(log.handlers)

これは、アプリケーション ロガーがエンジンごとに EnginePUBHandler を持っていることを示しています。次に、別のターミナルで iplogger アプリを起動し、各エンジンからのログ メッセージを確認します。

ただし、達成したいのは、これらのログメッセージを別の端末ではなくノートブックに表示することです。システムコールを介してノートブック内から iplogger を開始しようとしましたが、クラッシュします。

4

0 に答える 0