Deprecation warnings are implemented backwards
Specifically, they piggyback on the logging system by calling logging first and then triggering errors, whereas they should simply call trigger_error, and leave it up to the site's error handling config or custom error_handlers whether that gets logged or not.
Also note that throwing an error from within CRM_Core_Error_Log technically makes that class a non-compliant PSR-3 implementation. Quoting from https://github.com/php-fig/fig-standards/blob/75d5769d235ceff12e5c850f54d7d43266e62769/accepted/PSR-3-logger-interface.md#13-context
A given value in the context MUST NOT throw an exception nor raise any php error, warning or notice.
Example:
Current: Civi::log()->warning('something', ['civi.tag' => 'deprecated']);
Proposed: trigger_error('something', E_USER_DEPRECATED);
(or call a wrapper function which does this - exact implementation doesn't matter, just don't call logging).