It is quite telling that in Firefox:
var foo = function() {}
foo.__proto__ == Function.prototype;
is true, whereas the statements:
console.log.__proto__ == Function.prototype;
console.log instanceof Function;
are both false.
Thus, console.log does not include Function.prototype in its prototype chain, so altering Function.prototype has no affect on console.log. This is perfectly fine, since console is a host object (rather than a native object in the ECMAScript specification) and may behave however Mozilla (or Google, or Microsoft, etc.) would like.
Why does this behavior exist? I'm not a Firefox dev, so I can't say for certain, but my best guess is that this was done specifically because console is a debugging tool. If you muck around with Function's prototype chain and then want to use console.log to verify what you're doing, it would be terrible if your debug reporting tool itself starting messing up and misreporting things to you.
EDIT:
The console functions have a separate prototype chain used by all of them:
console.log.__proto__ == console.dir.__proto__ // true
console.log.__proto__.func = 5;
console.dir.__proto__.func == 5 // true