Leenert Regebro の回答: どうやら私の直感は正しかったようで、これは不可能です。また、2 時間で回答が 1 つしかないことからも明らかです。コメントもありがとうございます。
私のGoogle-fooは私を失敗させています。
単一のパブリッシャーの下で複数のプロジェクトで使用するために、カスタム例外のライブラリをモジュールとして作成しています。他のプロジェクトでは発言権がないか、発言権があるかもしれません。したがって、それは私と他の人の両方で使用されている可能性があります。「その他」がここでの問題です。私の例外モジュール内には、logging
モジュールを使用してログファイルにトレースバックなどを出力するための特定の関数があります。logging
私はモジュール を使用しているので、これは私にとっては問題ありません。
ただし、を使用していない他の誰かがlogging
例外ライブラリを使用している場合は、ログの部分をスキップする必要があります。try...except を使用するとこの問題は解決しますが、使用している場合はどうなりlogging
ますか? この場合、ログ スキーム (コンソール/ファイル/ストリーム、ファイル名など) を特定できる必要があります。これは、サブロガーを作成して、ファイル (またはコンソールまたはあなたが持っているもの) に書き込むことができるようにするためです。 ):
<snip>
their_logger = THE_FUNCTION_I_CANNOT_FIGURE_OUT_HOW_TO_WRITE()
temp_var = their_logger.name + ".ExceptionLogger"
myLogger = logging.getLogger(temp_var)
</snip>
明らかに、モジュールをインスタンス化し、 type のパラメーターを受け取る別のクラスまたは関数を作成することもできますがlogging.logger
、可能であれば、これを馬鹿に証明したいと思います。
他のプログラマーが使用しない可能性があるため、私が知っている値global
の a またはdict をチェックすることさえできません。globals()
これを行う方法はありますか?(私のライブラリがインポートされていると仮定すると、おそらくトップレベルのアプリケーションではありません...)個人的には、名前空間のアップストリームからデータを取得して、明示的に渡すことなく下位の名前空間で使用できるようにしようとしたことはありません。可能ですが、多くのプログラマーがいますが、これを達成した人はいますか?