私は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
これは1つのレベルでのみ機能しますが、モジュールによってインポートされるモジュールでは機能しません。私は質問で何をしようとしているのかを明確にします。 – bubthegreat
私はautologgingを使って簡単にしましたが、別のモジュールをインポートしたモジュールに関する情報が表示されない同じ問題があります(aux.pyのように、aux.pyのみ表示します)それも同様に呼ばれた)。私は単にlogging.getLogger(__ name__)の使い方を誤解していますか? – bubthegreat
ロギングをもっと使用した後、私がしていたことがなぜ地獄のように愚かなのか理解しています。とにかくお返事いただきありがとうございます。 :) – bubthegreat