Aquí hay un ejemplo que usa Java. Ha pasado un tiempo desde que usé log4j, pero por lo que recuerdo, toda la herramienta de registro log4j se inicializaría desde un archivo XML. El archivo XML en sí podría contener múltiples registradores con diferentes configuraciones (dónde escribe, en qué niveles se escribe, etc.). Entonces, en este caso, tendría objetos de registrador en lugar de métodos estáticos de registrador para especificar qué registrador desea invocar. Es decir.
Logger logger = Logger.get("Network");
registraría cosas relacionadas con la conectividad de red, paquetes descartados, etc., o
Logger logger = Logger.get("Application");
que registraría cosas relacionadas con su lógica / aplicación empresarial. Al menos con log4j también puede configurar qué niveles de registro se escriben realmente (los niveles predeterminados disponibles son información, rastreo, advertencia, error, depuración).
Si tuviera métodos estáticos, lo mejor que podría hacer es configurar un único registrador que apunte a la salida estándar, un archivo, etc., pero todo lo que registre iría al mismo lugar. Con los objetos de registro, es más fácil hacerlo para que su información de registro se extienda a múltiples archivos.