I've recently wrote a program in which I used extensive logging.
It was a C program, but the principles remain. I didn't use
multiple -v flags to indicate what to log, but instead, I logged
everything with syslog (the program is run as a daemon, so syslog
is a natural choice). The advantage of logging with syslog is that
you can configure outside of the program what you will keep. And
very importantly, you can change what you are interested in without
restarting the program. Furthermore, you can decide to keep errors
in a separate file, which you retain longer than say, notices.