给定一个使用标准库日志记录的 Python 复杂应用程序,如下所示:
import logging
logger = logging.getLogger("mycomponent")
# (Split over multiple Python files/folders of course)
def do_a_really_specific_thing(x):
if isinstance(x, int):
logger.info("I'm doing a thing! %s", x)
return 2 * x
else:
logger.error("Ignoring non-integer value %s", x)
return 0
def run_a_task(task_input):
return do_a_really_specific_thing(task_input.x)
def process_a_transaction(req):
y = run_a_task(req.data)
result = y + 1
logger.info("Processed transaction %s", req.txn_id)
return result
Run Code Online (Sandbox Code Playgroud)
是否有一些标准模式,无需编辑内部函数的代码do_a_really_specific_thing()
,即可logging
使用跟踪或相关 ID 等附加信息来装饰上下文中引发的任何标准事件?
我正在思考以下内容:
def process_a_transaction(req):
with decorate_logs(txn_id=req.txn_id):
y = run_a_task(req.data)
return y + 1
Run Code Online (Sandbox Code Playgroud)
这似乎是一个非常标准的想法,但我遇到的文章似乎都涉及引入一些大型日志框架或其他工具。例如,此处使用 Datadog,此处使用 SolarWinds AppOptics。
归档时间: |
|
查看次数: |
5337 次 |
最近记录: |