So where do deprecation warnings go? I'm actually sympathetic to logs not being the best place, but I'm not sure what else to do with them. If you've got a backend/admin interface then sure pop it up there, but not all applications have such a UI.
What kind of deprecation are you talking about? Assuming deprecated functions/types/etc, isn't this something your compiler or linter should catch?
A significant part of my job (sysadmin) has always involved running 3rd-party daemons on the company's servers to provide assorted services. It's semi-common for these services to throw deprecation warnings on startup like "you ran this service as fooservice --db-backend=sqlite --db-path=/var/lib/fooservice/db.sqlite; please be aware that sqlite support will be removed in version 9.0 next year". In a perfect world we'd catch that kind of thing by reading release notes, but 1. release notes don't always get read, 2. release notes don't always spell these things out as well as they should, and 3. release notes don't know what options you're actually using, so it can be way easier for the program to throw a warning when it sees you actually using deprecated functionality.