After further investigation, I've discovered some more. In my previous build, I had passed --with-logchar=wchar_t to configure. Then, LogString was defined essentially as std::wstring. Adding my operator<<() functions gave a definition for std::string. But, if you don't pass --with-logchar=wchar_t to configure, you end up with multiple definitions of the function with the same prototype, since LogString is now also essentially std::string.
So, perhaps a fix would be to define an operator<<() function for std::string if using wchar, and a function for std::wstring otherwise. I'm attaching a patch, to replace my previous patch, that fixes the one direction (defines operator<<() for std::string).