2017-01-04 7 views
1

それを呼び出すのは、私はこのようなコードがあるとしましょう:パイソン - モジュールから関数内で使用ロガーは

ModuleA.py:

import logging 
logger = logging.getLogger('A') 

def utility_func(): 
    logger.info('hi') 
print utility_func() 

ModuleB.py:

import logging 
logger = logging.getLogger('B') 
from ModuleA import utility_func 

print utility_func() 

utility_funcがある場合にはModuleA.py内から呼び出されます。 'A'ロガーを使用したいのですが、ModuleB.pyから呼び出されたときに 'B'ロガーを使用したいと思います。

これを行う方法はありますか?物事を設定するより良い方法は?

更新:

def utility_func(): 
    logging.info('hi') 

そのバブルが呼び出し元のコードが使用しているログ方までになります。

何にutility_func変更の考えはどうですか?

(utils.pyのような)別のファイルにこれを入れて
+0

明示的に私は考え、でロガーを渡すことができます。通常、 'logging.getLogger(__ name __)'を使って現在のモジュール名を設定することに注意してください。 – jonrsharpe

+0

私は 'A'と 'B'を別のロギング動作を行うために別の場所に設定しました。 – Greg

答えて

0

def utility_func(logger): 
    logger.info('hi') 
ファイルに続いて

ModuleA.py

import logging 
import utils 

logger = logging.getLogger(__name__) 
print utility_func(logger) 
0

は、ここで私は一緒に行くことになったものです。しかし、よりエレガントな方法があれば、私はまだ興味があります。

ModuleB.py:

import logging 
import ModuleA 

logger = logging.getLogger('B') 
ModuleA.logger = logger 

print ModuleA.utility_func() 
関連する問題