2016-12-15 2 views
0

私はスレッド名を印刷する必要がありますが、私はどこでも、関数呼び出しを追加する必要があります。重複したコードを減らすには?

self.logger.debug("{} log".format(currentThread().getName())) 
self.logger.error("{} log".format(currentThread().getName())) 

私は、ロギングモジュールを使用し、それが関数呼び出しから来て、ログのプレフィックスを追加することが可能でしょうか?

self.logger.my_debug("log") 
self.logger.my_error("log") 

を私はしたくない:

Antoher場合は、ロガーは、ロギングモジュールからのものではないということです、それは私がこのようにそれを呼び出すことができるようにいくつかの機能を生成し、機能をパッチサルにpossbileです異なるロギングレベルの重複コードを手作業で多くの機能を書くコードはドキュメントを見てみましょう。この

for log_level in ("error", "warn", "debug", "info") 
...generating functions... 

答えて

0

のようなものであれば、それは良いことがあります:https://docs.python.org/2/library/logging.html#logrecord-attributes

あなたのコードは次のようになります。

FORMAT = '%(asctime)-15s %(threadName)s %(funcName)-8s %(message)s' 
logging.basicConfig(format=FORMAT) 
logger = logging.getLogger('mylogger') 
logger.warning("message here) 

は、ポイントを強調するために:ログは正常にグローバルに設定されています。特に、「どのようなフォーマットにログがありますか」、「どこにログが記録されますか?決定される。 私はPythonロギングシステムb/Cを好まないのですが、それはむしろうわべになっていますが、効果的にログを記録するには、どのように動作するかを理解することが不可欠です。

関連する問題