現在動作している関数のツリーを表示するクラスを書きたいと思います。つまり、次のことを意味します。
関数 A が最初に関数 B を呼び出し、次に関数 C を呼び出し、関数 C が関数 D を呼び出すとします。時間 t = 1 で、B が実行されているので、stdout を次のようにします。
Root: function A -> running properly, called B
2-nd: function B -> running properly
時間 t = 2 で、B は A に戻ったので、stdout は次のようになります。
Root: function A -> running properly, B returned
時刻 t = 3 で、A は C を呼び出しました。時刻 t = 4 で、C は D を呼び出しました。stdout は次のようになります。
Root: function A -> running properly, B returned, called C
2-nd: function C -> running properly, called D
3-rd: function D -> running properly
時間 t = 5 で、D が戻ってきました。時間 t = 6 で、C が戻ってきました。標準出力は次のようになります。
Root: function A -> running properly, B returned, C returned
時間 t = 7 で、関数 A は以下を返しました。
Root: function A -> Done
ロガーオブジェクトを作成して渡す以外に、これを自動化するよりエレガントな方法はありますか? A または B がマルチスレッド プロセスの場合はどうなるでしょうか。
どんな提案でも大歓迎です。ありがとうございました!