2017-08-15 24 views
-1

私は複数のpythonファイルを持っているので、複数のpythonファイルから1つの共通ログファイルにログする必要があります。私はフォーマットやjson辞書のログ設定ファイルを使いたくない。それぞれのpythonファイルは、マスターpythonファイルkickstart.pyにインポートされ、すべてkickstart.pyから呼び出されます。私は、マスターPythonスクリプトから呼び出されたさまざまなPythonモジュールのすべてのメッセージを単一のログファイルに記録したいと思います。 方法を提案してください。私はpythonの料理本を通ったが、それは有用ではなかった。私はこれに非常に新しいです。あなたはloggingモジュールを使用していることを行うことができます複数のpythonファイルからPythonの単一ログファイルにログ

おかげ

+0

あなたは(https://docs.python.org/2/library/logging.html)[ロギングに関するドキュメント]を読みましたか? – agtoever

+0

ドキュメントを読みましたが、なぜロガー(somename)では動作するのですが、ロガー(__ name__)では動作しないのはわかりません https://docs.python.org/2/howto/logging-cookbook.htmlここの例 –

答えて

0

。あなたのベースモジュールの1つでこの関数を定義し、何かを記録したいすべてのモジュールでこの関数を呼び出します。

あなたは、からログインしたいロガー名を指定してこの関数を呼び出すと、すべてのモジュールが filename引数で定義された同じログファイルに印刷したいすべてのモジュールから次に
import logging 
def get_logger(name): 
    log_format = '%(asctime)s %(name)8s %(levelname)5s %(message)s' 
    logging.basicConfig(level=logging.DEBUG, 
         format=log_format, 
         filename='dev.log', 
         filemode='w') 
    console = logging.StreamHandler() 
    console.setLevel(logging.DEBUG) 
    console.setFormatter(logging.Formatter(log_format)) 
    logging.getLogger(name).addHandler(console) 
    return logging.getLogger(name) 

<base.py> 
logger = get_logger('base') 
logger.info('testing logger from module base') 

<module2.py> 
logger = get_logger('module2') 
logger.info('testing logger from module module2') 

<dev.log> 
2017-08-11 00:34:00,361  base INFO testing logger from module base 
2017-08-11 00:34:00,361  module2 INFO testing logger from module module2 

logging.basicConfig()

関連する問題