UNPKG

masson

Version:

Module execution engine for cluster deployments.

58 lines (50 loc) 1.84 kB
--- title: layout: module --- # Bootstrap Log Gather system information fs = require 'fs' pad = require 'pad' mecano = require 'mecano' module.exports = [] module.exports.push 'masson/bootstrap/mecano' module.exports.push name: 'Bootstrap # Log', required: true, callback: (ctx, next) -> mecano.mkdir destination: './logs' , (err, created) -> return next err if err host = ctx.config.host.split('.').reverse().join('.') # Add log interface ctx.log = log = (msg) -> log.out.write "#{msg}\n" log.out = fs.createWriteStream "./logs/#{host}_out.log" log.err = fs.createWriteStream "./logs/#{host}_err.log" close = -> setTimeout -> log.out.close() log.err.close() , 100 ctx.on 'action', (status) -> if [ctx.PASS, ctx.OK, ctx.FAILED, ctx.DISABLED, ctx.STOP, ctx.TIMEOUT, ctx.WARN ].indexOf(status) isnt -1 return log.out.write ">>> END #{(new Date).toISOString()}\n" return unless status is ctx.STARTED date = (new Date).toISOString() msg = "\n#{ctx.action.name}\n#{pad date.length+ctx.action.name.length, '', '-'}\n" log.out.write msg log.out.write ">>> START #{(new Date).toISOString()}\n" log.err.write msg ctx.on 'end', -> log.out.write '\nFINISHED WITH SUCCESS\n' close() ctx.on 'error', (err) -> log.out.write 'FINISHED WITH ERROR\n' print = (err) -> log.err.write err.stack or err.message + '\n' unless err.errors print err else if err.errors log.err.write err.message + '\n' for error in err.errors then print error close() next null, ctx.PASS