Right now we have a pattern of doing this:
log = Logger()
try:
applicationCode(parameter)
except BaseException:
log.failure("while doing xyz with {parameter}", parameter=parameter)
else:
proceed()
This is verbose, error-prone, and kinda reads backwards. Instead, something like this would be nicer:
log = Logger()
with log.whenThereIsAnyProblemLogThis("while doing xyz with {parameter}", parameter=parameter) as operation:
applicationCode(parameter)
if operation.succeeded:
proceed()