Как уже упомянул
Andrey Tsvetkov статью, правда уже бородатую (4 года как никак). Я использую
winston, оформленный как отдельный модуль. В нем уже по уровню того, какую ошибку логирую - разбираюсь куда ее (STDERR, база, прочее). Для каждой ошибки можно формировать и свой вывод. Вот только пользуюсь уже ver3, хоть он и RC, но намного удобнее ver2.