Ever since we implemented the watchog() function, and made it a hook, we have had situations that cause loss of logged data.
As it stands, the watchdog() function checks to see if there are modules implementing hook_watchdog(), and if not, it does nothing, losing the data that was supposed to be logged.
This happens early in the bootstrap before we boot at level DRUPAL_BOOTSTRAP_CODE. That is the following boot levels can potentially log nothing despite calls to watchdog().
DRUPAL_BOOTSTRAP_CONFIGURATION,
DRUPAL_BOOTSTRAP_PAGE_CACHE,
DRUPAL_BOOTSTRAP_DATABASE,
DRUPAL_BOOTSTRAP_VARIABLES,
DRUPAL_BOOTSTRAP_SESSION,
DRUPAL_BOOTSTRAP_PAGE_HEADER,
DRUPAL_BOOTSTRAP_CODE,
One common example is using memcache, before all the above levels are booted. There are also potentially tens of other cases within code/includes that call watchdog().
One can argue that logging to two places can be confusing, but having stuff not logged in, and just lost, as we have now, is more confusing. Besides, stuff that is logged in early is mainly for advanced users any way. The casual Drupal user will not be bothered by this new feature.
Patch forthcoming.