2017-07-21 13 views
0

私はPythonロギングで簡単に動作するように見えます。デバッグのロギング中にmodule-> functionのスタック全体をログに記録したいのですが、インポートされたクラスを適切に継承するのに問題があります。Pythonロギング:インポートされたモジュールのモジュール情報

module.imported_module.function - message 
module.imported_module2.function - message 
module.imported_module3.imported_module.function - message 

私はきちんとベースモジュール名を移入するlogging.getLogger(ファイル)を使用することができましたが、私は考えるようにしようとすると:私は取得しようとしているものの

例私がありますように感じる

logging.getLogger('module.submodule')

:方法が適切にサブモジュールにそれを渡すためのlogging.getLoggerは()logging.getLogger(中親の名前を必要とするため、私は次のように呼び出す)、トラブルに自分自身を取得しますインポートされたモジュールやクラスにこの情報を渡す簡単な方法ですが、私が実行しているときにロギングモジュールの参照用の一時ファイルを作成する必要がありません。理想的ではない。

似たようなものを得るための適切なキーワードを見つけることができないため、助けてくれれば幸いです。ここで

はmodule.pyのための私のコードです:

#!/usr/bin/python 

import logging 
import aux 
import sys 
from autologging import logged 

logging.basicConfig(
    level=logging.DEBUG, stream=sys.stdout, 
    format="%(levelname)s:%(name)s:%(funcName)s:%(message)s") 
logger = logging.getLogger(__name__) 


def print_names(): 
    logger.info('test info') 
    logger.debug('test debug') 
    logger.error('test error') 
    aux.printme() 


if __name__ == '__main__': 
    print_names() 

とaux.py用:

[email protected]:~/tools/$ ./module.py 
INFO:__main__:print_names:test info 
DEBUG:__main__:print_names:test debug 
ERROR:__main__:print_names:test error 
INFO:aux:printme:test info 
DEBUG:aux:printme:test debug 
ERROR:aux:printme:test error 

私がしようとしている何を:私は現在入手

#!/usr/bin/python 
import logging 
from autologging import logged 


logger = logging.getLogger(__name__) 
def printme(): 
    logger.info('test info') 
    logger.debug('test debug') 
    logger.error('test error') 

出力取得:

[email protected]:~/tools/$ ./module.py 
INFO:__main__:print_names:test info 
DEBUG:__main__:print_names:test debug 
ERROR:__main__:print_names:test error 
INFO:__main__:print_names:aux:printme:test info 
DEBUG:__main__:print_names:aux:printme:test debug 
ERROR:__main__:print_names:aux:printme:test error 

答えて

0

logging.getLogger(__name__)the documentationに記載されているように使ってみませんか?

+0

これは1つのレベルでのみ機能しますが、モジュールによってインポートされるモジュールでは機能しません。私は質問で何をしようとしているのかを明確にします。 – bubthegreat

+0

私はautologgingを使って簡単にしましたが、別のモジュールをインポートしたモジュールに関する情報が表示されない同じ問題があります(aux.pyのように、aux.pyのみ表示します)それも同様に呼ばれた)。私は単にlogging.getLogger(__ name__)の使い方を誤解していますか? – bubthegreat

+0

ロギングをもっと使用した後、私がしていたことがなぜ地獄のように愚かなのか理解しています。とにかくお返事いただきありがとうございます。 :) – bubthegreat

関連する問題