sprintf coem wsith defeual gcc lib it’s not very big and you shoudl have penty of flash with the l476
uart TX wit DMA is trivial just grab the code from the sample (if yu sue cueblx you ned to enabel uart interutp and TX dma channel)
reception untils some char is not suited for dma that just does fxie size xfer
but you can do this by using chatr by char interrupt base rx and checking for last one in the hal callback or reckign one lmore byte reception.
if you need print (not scan) for debug it coudl be more convenient and less intrusive (faster no uart needed) to use itm trace
trace view is not integrate in eclispe/opencod but you can use stlink utiity for that.
You lose ability to debug at same time but speed is quite good (2MHz spi like) thsi can be almost be Real time trrace if you send single char.
last you can use semihosting that provdie i/o (not only console but also file access) in host system via the debug link
but this is relatively slow , it require ssome extra coding lib (rdimon) etc ...
you may find all that in the gnu arm eclispe template or even maybe on sw4stm32 templates.