我正在开发一个包,其他人将使用它来编写处理脚本.对于测试/调试/非疯狂的目的,我想在我的代码中包含一些日志记录语句,特别是使用logging_setup()我为另一个项目开发的实用程序函数来进行格式化/文件输出控制.
因为我不是在编写一个自包含的应用程序,而是一个意图被其他程序调用的库,我很困惑我应该使用我的logging_setup()实用程序来生成我想要的所需的日志记录结果.这让我想知道在我的软件包中使用日志系统是否是一个好主意.
我应该在哪里使用我的logging_setup()实用程序?
编辑:这是我上面提到的功能:
def logging_setup(cfg_path=definitions.LOG_CONFIG_PATH, lvl=logging.INFO):
"""Setup logging tool from YAML configuration file.
This should only be run once. Formatted (or configured) logging can only be
done from within functions/classes in other modules.
"""
# create directory for log files if not already there
try:
os.makedirs(definitions.LOGS_PATH)
except OSError as e:
if e.errno != errno.EEXIST:
raise
# configure logging from yaml config file
if os.path.exists(cfg_path):
with open(cfg_path, 'rt') as f:
config = yaml.safe_load(f.read())
logging.config.dictConfig(config)
else:
logging.basicConfig(level=lvl)
Run Code Online (Sandbox Code Playgroud)
我应该在哪里使用我的
logging_setup()实用程序?
在库代码中,您不应该在任何地方配置日志记录.您的库(应用程序分发服务器)的用户可以配置日志记录处理程序.
作为库的作者,您对运行时上下文一无所知,甚至根本不知道是否有可写的文件系统可用于创建日志文件.但要使用 logging,您无需关心配置 - 只需import logging在模块级别创建记录器,您就可以从库代码中记录事件.它不是库代码,以决定其中那些日志事件去-或者,如果他们去任何地方都没有.
如果您正在提供应用程序而您想要记录输出,那么将日志记录配置为应用程序在启动时所做的第一件事 - 通常在Python中这意味着logging.config.dictConfig在进入该main()功能后不久就会调用或类似(请确保记录配置不会发生在import时间).
| 归档时间: |
|
| 查看次数: |
48 次 |
| 最近记录: |