axiom
Version:
Environment setup/runtime standardization for Node.js applications.
25 lines (20 loc) • 778 B
text/coffeescript
_ = require 'lodash'
logger = require 'torch'
moment = require 'moment'
module.exports = (loggers=[]) ->
core = require '../core'
{channel, logLevels} = core.log
getIndex = (name) -> _.findIndex logLevels, ({topic}) -> topic is name
loggers.forEach ({writer, level}) ->
return unless writer?
level or= 'info'
targetIndex = getIndex(level)
if writer is 'console'
writer = (err, envelope) ->
{timeStamp, data, topic} = envelope
time = moment(timeStamp).format('YYYY/MM/DD HH:mm:ss Z')
{color} = _.find logLevels, (l) -> topic is l.topic
logger[color] "[#{time} #{topic.toUpperCase()}]", data
logLevels.forEach ({topic, color}, index) ->
if index <= targetIndex
core.listen channel, topic, writer