Skip to content

Instantly share code, notes, and snippets.

@tylerFowler
Created January 19, 2015 02:16
Show Gist options
  • Save tylerFowler/1d18b24e9e7cbbfd1a4e to your computer and use it in GitHub Desktop.
Save tylerFowler/1d18b24e9e7cbbfd1a4e to your computer and use it in GitHub Desktop.

Revisions

  1. tylerFowler created this gist Jan 19, 2015.
    44 changes: 44 additions & 0 deletions nodejs_logger.coffee
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,44 @@
    ### Setup ###
    # src/coffee/server/utlity/logger.coffee

    colors = require 'colors' # npm install colors
    config = require './config' # optional custo config manager (loads from config.json)

    class Logger
    constructor: (@moduleName) ->

    getTimeString: ->
    time = new Date()
    return "#{time.getHours()}:#{time.getMinutes()}:#{time.getSeconds()}"

    error: (message, err) ->
    console.log "#{@moduleName} #{@.getTimeString()}".red +
    " | [ERROR]: #{message};\n\terr=#{err}".red

    warning: (message) ->
    console.log "#{@moduleName} #{@.getTimeString()} | [WARNING]: #{message}".yellow

    info: (message) ->
    unless config.app.log_level isnt 'verbose'
    console.log "#{@moduleName} #{@.getTimeString()} | [INFO]: #{message}".blue

    # this should act like a singleton for each module that uses it
    module.exports = (moduleName) ->
    moduleName ||= 'Unnamed'
    return new Logger moduleName

    ### Usage ###
    # src/coffee/server/app.coffee

    logger = require('./utiltity/logger') 'App'

    # do some setup for the app...

    # phew, everything went well
    logger.info 'Successfully created Express app'

    # check yourself before you wreck yourself
    logger.warn 'You want ants? Cause that\'s how you get ants.'

    # meltdown
    logger.error 'God, I said the cap on the poison pen slips off for no reason didn\'t I?', new Error 'Now he\'s fetching a rug. Happy, Cyril?!'