I understand it is a best practice in angular to use
$log instead of
However, I can't find good documentation explaining the reasons. Why should a developer use
$log first checks if the browser supports
console.log (IE 8, for example, doesn't). This prevents errors being displayed on IE 8. Note: this doesn't mean it will log anything on IE 8, it simply means it won't throw the error.
Next to that, it also allows you to decorate and mock
$log for extending and testing purposes, if you are so inclined. You could for example decorate it to log to an array for IE 8 support.
Error instance, it will attempt to format it nicely. This can be found out by reading the source code.
EDIT: "It is not that IE 8 doesn't support console.log. It just doesn't create the console object until the dev tools are opened." See comments below for more details.
This recipe can be found in it's original form on Stack Over Flow.