In net.cpp, around line 1688 there is the StartNode function.
The first thing it does is try to find the local host ip and then it printf it (printf("addrLocalHost = %s\n", addrLocalHost.ToString().c_str());).
Then, one line below, if there is a proxy configured or if bitcoin mustn't accept incoming connections, it drops the ip address it has found and it rewrites a second log line that is nearly the same (printf("addrLocalHost = %s\n", addrLocalHost.ToString().c_str());). The only thing that changes is the fact that the IP is now different. So in the log you'll get:
addrLocalHost = something addrLocalHost = 0.0.0.0
I think the second printf should be distinguished by the first (something like" setting addrLocalHost to 0.0.0.0 because of proxy/no incoming connection) and probably the first part (the one that finds the local ip) shouldn't directly be done in this situation.