Printing to the Moteino M0 USB Port works fine for me in simple sketches but not in more complex sketches. For example, the "Example periodic sleep using RTCZero library" sketch on the Moteino M0 guide doesn't print for me. I can tell the sketch is running, because the LED blinks every 3 seconds. But nothing prints.
If I change all the prints to Serial1 and connect those pins to a separate USB serial adapter on my computer, print works ok in "Example periodic sleep using RTCZero library".
While M0 is a much more powerful and complex processor than the basic AVRs, it also comes with a load of challenges.
In this case the problem boils down to the disabling of clocks and USB module. Ie breaking the USB link between M0 and PC/computer.
First of all, if the USB is disabled/detached, then even if you don't sleep, and the Serial monitor is kept open, the serial connection is lost and there is no more USB serial output. This problem doesn't exist with a traditional UART, that is why you always get the output directly from the pins because that "special" USB link is not broken.
So TLDR; would be: IMO you're better off with UART for logging purposes, it's simple and it works. Read below for more explanations.
When you sleep, even if the libs you use do not specifically disable or detach from USB, sleep code will turn off a lot of modules in the MCU to be able to achieve the low power sleep.
At this moment I'm not entirely sure if it's even possible to revive that USB connection after sleep mode, and continue to get serial via USB. From what I've read so far it's not possible and at least the IDE cannot do it. But I could be wrong and things might have changed recently. I would need to look at the DS and determine if there's a way to keep the clock domains running while also sleeping the rest of the MCU to ensure the USB link is not broken in any way and that after wakeup it is completely ready to continue serial output.
But in my own practice I haven't seen a case where the M0 is USB powered and you have to be worried about sleep current, while also requiring to keep a USB connection alive.