I would say it depends on your use case and the availability of the needed functionalities.
Often you’ll find the wanted features in higher level APIs like fastai, Ignite or Lightning.
These APIs provide you a different layer of abstraction so that you can chose the appropriate one.
However, if you’ve already a working code and just need to apply some form of logging, it’s sometimes more convenient (for me at least) to write this functionality myself.