0

元の質問

パッケージレベルのロギングを正常に実装したパッケージqualysapiがありますが、ユーザーに対して透過的なモジュールレベルの粒度を探しています。このソリューションから実装をモデル化しました。

パッケージ モジュール全体でロギングを設定する効率的な方法

そのクラスを利用してそのロガーを追加する「ユーザー」モジュールのパッケージレベルのロギングを実装しようとしています。ユーザーモジュールはパッケージ名を追加するだけでよく、パッケージに含まれるモジュールを知る必要はないと思います。

以下は私がこれまでに持っているものです(簡略化):

パッケージ/____init____.py:

from package_name.util import connect

パッケージ/util.py:

import logging
import package_name.module_class

logger = logging.getLogger(package_name)

def connect():
    return module_class.ClassName()

パッケージ/module_class.py:

class ClassName:
    def __init__(self):
        package_name.util.logger.info("Created instance.")

ユーザー.py:

import logging
import package_name

# My logging.
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# Log package_name.
logger_pkg = logging.getLogger('package_name')
logger.addHandler(logger_pkg)
# Define a Handler which writes to the sys.stderr.
logger_console = logging.StreamHandler()
logger.addHandler(logger_console)

モジュール レベルのパッケージ ログを許可しながら、ユーザーの使いやすさを維持するためのベスト プラクティスを知りたいです。

更新 1

私はそれを間違っています。質問を何が起こるべきかに変えます。

ユーザーがそのパッケージのすべてのモジュールのすべてのロガー ハンドラーのパッケージ名を追加するだけで済むように、複数のモジュールを含むパッケージを設定するにはどうすればよいですか? 以下のユーザーモジュールの例:

import logging, package_name
logger = logging.getLogger(__name__)
logger_pkg = logging.getLogger('package_name')
logger.addHandler(logger_pkg)
4

1 に答える 1