Name: js-handler/node_modules/restify/node_modules/bunyan/test/child-behaviour.test.js 
1:
/*
2:
 * Copyright (c) 2012 Trent Mick. All rights reserved.
3:
 *
4:
 * Test some `<Logger>.child(...)` behaviour.
5:
 */
6:
 
7:
var bunyan = require('../lib/bunyan');
8:
 
9:
// node-tap API
10:
if (require.cache[__dirname + '/tap4nodeunit.js'])
11:
        delete require.cache[__dirname + '/tap4nodeunit.js'];
12:
var tap4nodeunit = require('./tap4nodeunit.js');
13:
var after = tap4nodeunit.after;
14:
var before = tap4nodeunit.before;
15:
var test = tap4nodeunit.test;
16:
 
17:
 
18:
 
19:
function CapturingStream(recs) {
20:
    this.recs = recs || [];
21:
}
22:
CapturingStream.prototype.write = function (rec) {
23:
    this.recs.push(rec);
24:
}
25:
 
26:
 
27:
 
28:
test('child can add stream', function (t) {
29:
    var dadStream = new CapturingStream();
30:
    var dad = bunyan.createLogger({
31:
        name: 'surname',
32:
        streams: [ {
33:
            type: 'raw',
34:
            stream: dadStream,
35:
            level: 'info'
36:
        } ]
37:
    });
38:
 
39:
    var sonStream = new CapturingStream();
40:
    var son = dad.child({
41:
        component: 'son',
42:
        streams: [ {
43:
            type: 'raw',
44:
            stream: sonStream,
45:
            level: 'debug'
46:
        } ]
47:
    });
48:
 
49:
    dad.info('info from dad');
50:
    dad.debug('debug from dad');
51:
    son.debug('debug from son');
52:
 
53:
    var rec;
54:
    t.equal(dadStream.recs.length, 1);
55:
    rec = dadStream.recs[0];
56:
    t.equal(rec.msg, 'info from dad');
57:
    t.equal(sonStream.recs.length, 1);
58:
    rec = sonStream.recs[0];
59:
    t.equal(rec.msg, 'debug from son');
60:
 
61:
    t.end();
62:
});
63:
 
64:
 
65:
test('child can set level of inherited streams', function (t) {
66:
    var dadStream = new CapturingStream();
67:
    var dad = bunyan.createLogger({
68:
        name: 'surname',
69:
        streams: [ {
70:
            type: 'raw',
71:
            stream: dadStream,
72:
            level: 'info'
73:
        } ]
74:
    });
75:
 
76:
    // Intention here is that the inherited `dadStream` logs at 'debug' level
77:
    // for the son.
78:
    var son = dad.child({
79:
        component: 'son',
80:
        level: 'debug'
81:
    });
82:
 
83:
    dad.info('info from dad');
84:
    dad.debug('debug from dad');
85:
    son.debug('debug from son');
86:
 
87:
    var rec;
88:
    t.equal(dadStream.recs.length, 2);
89:
    rec = dadStream.recs[0];
90:
    t.equal(rec.msg, 'info from dad');
91:
    rec = dadStream.recs[1];
92:
    t.equal(rec.msg, 'debug from son');
93:
 
94:
    t.end();
95:
});
96:
 
97:
 
98:
test('child can set level of inherited streams and add streams', function (t) {
99:
    var dadStream = new CapturingStream();
100:
    var dad = bunyan.createLogger({
101:
        name: 'surname',
102:
        streams: [ {
103:
            type: 'raw',
104:
            stream: dadStream,
105:
            level: 'info'
106:
        } ]
107:
    });
108:
 
109:
    // Intention here is that the inherited `dadStream` logs at 'debug' level
110:
    // for the son.
111:
    var sonStream = new CapturingStream();
112:
    var son = dad.child({
113:
        component: 'son',
114:
        level: 'trace',
115:
        streams: [ {
116:
            type: 'raw',
117:
            stream: sonStream,
118:
            level: 'debug'
119:
        } ]
120:
    });
121:
 
122:
    dad.info('info from dad');
123:
    dad.trace('trace from dad');
124:
    son.trace('trace from son');
125:
    son.debug('debug from son');
126:
 
127:
    t.equal(dadStream.recs.length, 3);
128:
    t.equal(dadStream.recs[0].msg, 'info from dad');
129:
    t.equal(dadStream.recs[1].msg, 'trace from son');
130:
    t.equal(dadStream.recs[2].msg, 'debug from son');
131:
 
132:
    t.equal(sonStream.recs.length, 1);
133:
    t.equal(sonStream.recs[0].msg, 'debug from son');
134:
 
135:
    t.end();
136:
});