Pythonでは、ロガーを関数に渡すためのいくつかの方法があります。一つの方法は、ロガーを関数の引数として渡すことです。しかし、通常はロガーをパラメータとして渡すことはありません。代わりに、各モジュールのトップで log = logging.getLogger (__name__)
を使用することが一般的です。
以下に、ロガーを関数に渡すための一般的な方法を示します。
import logging
def configure_logging():
logger = logging.getLogger("my logger")
logger.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)
fh = logging.FileHandler(LOG_FILENAME)
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
logger.addHandler(fh)
return logger
def count_parrots(logger):
logger.debug("Counting parrots")
if __name__ == '__main__':
logger = configure_logging()
logger.debug("I'm a log file")
parrots = count_parrots(logger)
このコードでは、configure_logging
関数でロガーを設定し、そのロガーを count_parrots
関数に渡しています。
しかし、関数内でロガーを使用するためには、getLogger
関数を使用することも可能です。getLogger
関数は、ファクトリーのような関数で、与えられたロガー名に対して常に同じインスタンスを返します。したがって、count_parrots
の中でロガーを取得するためには、単に logger = logging.getLogger("my logger")
を使用すればよいです。
以上が、Pythonでロガーを関数に渡す方法についての基本的な説明です。この情報が役立つことを願っています。