Example #1
0
 sink.json = function (level, qualifier, label, body, system) {
     queue.push({
         when: this.Date.now(),
         level: level,
         qualifier: qualifier,
         label: label,
         body: body,
         system: system
     })
 }
Example #2
0
 sink.json = function (level, qualifier, label, body, system) {
     if (triage(LEVEL[level], qualifier, label, body, system)) {
         var header = {
             when: body.when || this.Date.now(),
             level: level,
             qualifier: qualifier,
             label: label,
             qualified: qualifier + '#' + label
         }
         for (var key in system) {
             header[key] = system[key]
         }
         for (var key in body) {
             header[key] = body[key]
         }
         queue.push(header)
     }
 }
Example #3
0
 descendent.on('prolific:accept', this._handlers.accept = function (message) {
     assert(message.body.triage)
     var triage = Evaluator.create(message.body.triage, require('prolific.require').require)
     assert(triage)
     sink.json = function (level, qualifier, label, body, system) {
         if (triage(LEVEL[level], qualifier, label, body, system)) {
             var header = {
                 when: body.when || this.Date.now(),
                 level: level,
                 qualifier: qualifier,
                 label: label,
                 qualified: qualifier + '#' + label
             }
             for (var key in system) {
                 header[key] = system[key]
             }
             for (var key in body) {
                 header[key] = body[key]
             }
             queue.push(header)
         }
     }
     queue.push([{ method: 'version', version: message.body.version }])
 })
Example #4
0
 descendent.once('prolific:pipe', this._handlers.pipe = function (message, handle) {
     queue.setPipe(handle)
 })
Example #5
0
Shuttle.prototype._listen = function (descendent, options, callback) {
    var now = coalesce(options.Date, Date).now()
    var monitorProcessId = +descendent.process.env.PROLIFIC_SUPERVISOR_PROCESS_ID

    descendent.increment()

    var id = [ descendent.process.pid, now ]
    var path = descendent.path.splice(descendent.path.indexOf(monitorProcessId))

    var queue = new Queue(512, id, descendent.process.stderr, { path: path })
    queue.send(callback)
    this._queue = queue

    if (options.uncaughtException != null) {
        var uncaughtException = this.uncaughtException(options.uncaughtException, queue)
        descendent.process.on('uncaughtException', function (error) {
            uncaughtException(error)
        })
    }

    if (options.exit != null) {
        descendent.process.on('exit', queue.exit.bind(queue))
    }

    // All filtering will be performed by the monitor initially. Until
    // we get a configuration we send everything.
    var sink = require('prolific.resolver').sink
    sink.json = function (level, qualifier, label, body, system) {
        queue.push({
            when: this.Date.now(),
            level: level,
            qualifier: qualifier,
            label: label,
            body: body,
            system: system
        })
    }

    this._handlers = { pipe: null, accept: null }

    descendent.once('prolific:pipe', this._handlers.pipe = function (message, handle) {
        queue.setPipe(handle)
    })
    descendent.on('prolific:accept', this._handlers.accept = function (message) {
        assert(message.body.triage)
        var triage = Evaluator.create(message.body.triage, require('prolific.require').require)
        assert(triage)
        sink.json = function (level, qualifier, label, body, system) {
            if (triage(LEVEL[level], qualifier, label, body, system)) {
                var header = {
                    when: body.when || this.Date.now(),
                    level: level,
                    qualifier: qualifier,
                    label: label,
                    qualified: qualifier + '#' + label
                }
                for (var key in system) {
                    header[key] = system[key]
                }
                for (var key in body) {
                    header[key] = body[key]
                }
                queue.push(header)
            }
        }
        queue.push([{ method: 'version', version: message.body.version }])
    })

    descendent.up(monitorProcessId, 'prolific:shuttle', id.join('/'))
}