原始问题
我有一个包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)