Objects knowing how to render themselves is great for debugging. In fact, many of us see toString just as a debugging function, and nothing meant for end-user presentation in non-debug console output.
I agree, generally. For that, I like Python's "repr" concept. A debug format should, in my opinion, match the definition syntax and be largely be handled by the language.