をフィルタリングする方法を失うことなく、私は怠け者だとロギングを使用するすべてのpythonファイルに次の行を避けたい:避け `ロガー= logging.getLogger(__名前__)`ログ
logger = logging.getLogger(__name__)
月に私がどのようにこれを尋ね完了し、答えを見つけました:Avoid `logger=logging.getLogger(__name__)`
残念なことに、回答には欠点があり、フィルターをかけることができません。
私は本当にこの無駄な余分な行を避けたいと思います。
例:
import logging
def my_method(foo):
logging.info()
残念ながら、私はlogging.info()
は、このファイルの最初に呼び出された場合、暗黙的にlogger = logging.getLogger(__name__)
を行うことは不可能だと思います。
不可能なものをする方法を知っている人がいますか?
更新は
私はDon't Repeat Yourselfが好き。ほとんどのファイルが一番上に同じ行を含む場合、これは繰り返しだと思います。 WETのように見えます。私の頭の中のPythonインタープリタは、私がそこを見るたびにこの行をスキップする必要があります。私の主観的な感情:この行は無駄な肥大です。行は暗黙のデフォルトでなければなりません。
モジュールの上部に* 1行*を定義するのは本当に難しいですか?すでに 'import logging'をタイプアウトしなければなりませんでした。 –
@MartijnPieters私は「インポートロギング」をタイプしません。私はこれを行うIDEを持っています。メソッドに "logging。[MAGIC-KEY-STROKE]"と入力すると、IDEはimportステートメントを先頭に挿入します。はい、私はこの行を入力したくありません。それは膨らんでいる。私はより少ないコードを必要とします。 – guettli
これは膨らんでいません。その名前のロガーオブジェクトが必要なことを明示的に宣言しています。パッケージでは、名前を気にしない場合、すべてのサブモジュールに対してそのロガーを再利用することができます。異なる階層の名前を簡単に使用できます。さらに、他のものはカスタム '__getattr__'を持つカスタムモジュールのサブクラスを必要とし、同じフレームを生成するためにグローバル内の' __name__'キーの呼び出しフレームをチェックします。 Pythonはそのような魔法をはっきりと表現しています。 –