La mejor práctica para permitir a los usuarios inyectar un registrador en los módulos de nodejs

Escribí este módulo para nodejs que se puede usar para enviar eventos desde cualquier lugar a través de sockjs a los clientes.

Ahora me gustaría incluir algunos mecanismos de registro configurables.

Por el momento, estoy agregando winston como una dependencia, lo requiero como un registrador en cada clase y uso logger.error, logger.warn, ...

#logger.js
var logger = require('winston');
module.exports=logger;

y

#myClass
var logger = require("./logger");
logger.error("Something went wrong")

Ahora, ¿cómo puedo hacer que el registrador sea reemplazable por un registrador personalizado o que el usuario configure el nivel de registro FUERA de mi módulo?

Por supuesto, no deberían tener que tocar el código del módulo para cambiar el registrador, sino poder crear el registrador con loglevel y mi módulo debería usarlo, si está disponible.

¿Alguna recomendación sobre cómo hacer eso?

¿O está bien una dependencia dura de "winston" y hacer que el nivel de registro sea configurable a través de npm-config?

Respuestas a la pregunta(2)

Su respuesta a la pregunta