loggj 1.0.5 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/formatter.js +24 -1
- package/lib/handlers/handler.js +3 -5
- package/lib/handlers/rotating.js +12 -12
- package/lib/logger.js +2 -4
- package/lib/utils/file-remover.js +8 -9
- package/lib/utils/re-glob.js +4 -4
- package/package.json +5 -4
- package/test/config.js +21 -20
- package/test/console.js +4 -4
- package/test/formatter.js +32 -6
- package/test/handlers.js +34 -31
- package/test/logger.js +17 -17
- package/test/util/error.js +2 -2
package/lib/formatter.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
4
4
|
|
|
5
5
|
var util = require('util');
|
|
6
|
+
var EOL = require('os').EOL;
|
|
6
7
|
|
|
7
8
|
var compileFormat = require('./utils/compileFormat');
|
|
8
9
|
|
|
@@ -29,9 +30,31 @@ Formatter.prototype = {
|
|
|
29
30
|
formatted = util.format.apply(util, record.args);
|
|
30
31
|
|
|
31
32
|
record.message = formatted;
|
|
32
|
-
|
|
33
|
+
|
|
34
|
+
if (this._format == 'json') {
|
|
35
|
+
// Format message as JSON
|
|
36
|
+
let obj = {
|
|
37
|
+
name: record.name,
|
|
38
|
+
message: record.message,
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
['levelname', 'pid', 'timestamp'].forEach(k => {
|
|
42
|
+
if (record[k] != null) {
|
|
43
|
+
obj[k] = record[k];
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
if (record.err) {
|
|
48
|
+
obj.err = record.err.stack;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
formatted = JSON.stringify(obj) + EOL;
|
|
52
|
+
} else {
|
|
53
|
+
formatted = this._compiledFormat(record);
|
|
54
|
+
}
|
|
33
55
|
|
|
34
56
|
record.message = message;
|
|
57
|
+
|
|
35
58
|
return formatted;
|
|
36
59
|
}
|
|
37
60
|
};
|
package/lib/handlers/handler.js
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
var util = require('util');
|
|
6
6
|
|
|
7
|
-
var Promise = require('bluebird');
|
|
8
|
-
|
|
9
7
|
var Formatter = require('../formatter');
|
|
10
8
|
var Filterer = require('../filterer');
|
|
11
9
|
var LEVELS = require('../levels');
|
|
@@ -23,9 +21,9 @@ function Handler(options) {
|
|
|
23
21
|
} else if('format' in options) {
|
|
24
22
|
this.setFormatter(new Formatter(options.format));
|
|
25
23
|
}
|
|
26
|
-
this._emit =
|
|
24
|
+
this._emit = util.promisify(function() {
|
|
27
25
|
return this.emit.apply(this, arguments);
|
|
28
|
-
}
|
|
26
|
+
});
|
|
29
27
|
Handler.all.push(this);
|
|
30
28
|
Filterer.call(this, options);
|
|
31
29
|
}
|
|
@@ -41,7 +39,7 @@ var proto = {
|
|
|
41
39
|
|
|
42
40
|
handle: function(record) {
|
|
43
41
|
if (!this.filter(record)) {
|
|
44
|
-
return Promise.
|
|
42
|
+
return Promise.resolve();
|
|
45
43
|
}
|
|
46
44
|
if (this.emit.length < 2) {
|
|
47
45
|
throw new Error('Handler.emit requires a callback argument');
|
package/lib/handlers/rotating.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const fsPromises = fs.promises;
|
|
4
5
|
var util = require('util');
|
|
5
6
|
var lockFile = require('lockfile');
|
|
6
7
|
var path = require('path');
|
|
7
|
-
var Promise = require('bluebird');
|
|
8
8
|
|
|
9
|
-
var stat =
|
|
10
|
-
var readdir =
|
|
9
|
+
var stat = fsPromises.stat;
|
|
10
|
+
var readdir = fsPromises.readdir;
|
|
11
11
|
|
|
12
12
|
var compileFormat = require('../utils/compileFormat');
|
|
13
13
|
|
|
@@ -207,7 +207,7 @@ RotatingFileHandler.prototype.emit = function emit(record, callback) {
|
|
|
207
207
|
that.reopen().then(() => {
|
|
208
208
|
that.doRotate(false, resolve);
|
|
209
209
|
}, () => {
|
|
210
|
-
return Promise.
|
|
210
|
+
return Promise.resolve();
|
|
211
211
|
});
|
|
212
212
|
} else {
|
|
213
213
|
resolve();
|
|
@@ -229,13 +229,13 @@ FileHandler.prototype.doRotate = function (force, cb) {
|
|
|
229
229
|
that._rotatingNow = true;
|
|
230
230
|
return that.rotate().then(() => {
|
|
231
231
|
that._rotatingNow = false;
|
|
232
|
-
return Promise.
|
|
232
|
+
return Promise.resolve();
|
|
233
233
|
});
|
|
234
234
|
} else {
|
|
235
235
|
debug('Rotating now already, skipping..');
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
|
-
return Promise.
|
|
238
|
+
return Promise.resolve();
|
|
239
239
|
}).then(function () {
|
|
240
240
|
if (cb) { cb(); }
|
|
241
241
|
}).catch((err) => {
|
|
@@ -257,7 +257,7 @@ FileHandler.prototype.reopen = function reopen() {
|
|
|
257
257
|
};
|
|
258
258
|
|
|
259
259
|
RotatingFileHandler.prototype._deleteOldFiles = function () {
|
|
260
|
-
return this._remover ? this._remover.deleteOldFiles() : Promise.
|
|
260
|
+
return this._remover ? this._remover.deleteOldFiles() : Promise.resolve();
|
|
261
261
|
};
|
|
262
262
|
|
|
263
263
|
RotatingFileHandler.prototype.shouldRotate = function (force) {
|
|
@@ -324,7 +324,7 @@ RotatingFileHandler.prototype._getData = function () {
|
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
that._prevSize = stat.size;
|
|
327
|
-
return Promise.
|
|
327
|
+
return Promise.resolve([stat.size]);
|
|
328
328
|
}).catch((err) => {
|
|
329
329
|
if (err.code == 'ENOENT') {
|
|
330
330
|
debug('No file, reopening..');
|
|
@@ -390,7 +390,7 @@ RotatingFileHandler.prototype.rotate = function () {
|
|
|
390
390
|
that._rotateAt = that._nextRotate(new Date());
|
|
391
391
|
that._rotateStartPeriod = that._rotatePeriod(that._rotateAt);
|
|
392
392
|
}
|
|
393
|
-
return Promise.
|
|
393
|
+
return Promise.resolve();
|
|
394
394
|
});
|
|
395
395
|
}, (e) => {
|
|
396
396
|
debug('.Lock rejected');
|
|
@@ -406,7 +406,7 @@ RotatingFileHandler.prototype.rotate = function () {
|
|
|
406
406
|
debug('.Unlock file:', fileRotate);
|
|
407
407
|
lockFile.unlockSync(fileRotate);
|
|
408
408
|
debug(' -- ROTATE NOT OK ');
|
|
409
|
-
return Promise.
|
|
409
|
+
return Promise.resolve();
|
|
410
410
|
});
|
|
411
411
|
};
|
|
412
412
|
|
|
@@ -475,7 +475,7 @@ RotatingFileHandler.prototype._renameBySize = function () {
|
|
|
475
475
|
fs.renameSync(filename, newFilename);
|
|
476
476
|
}
|
|
477
477
|
}
|
|
478
|
-
return Promise.
|
|
478
|
+
return Promise.resolve();
|
|
479
479
|
});
|
|
480
480
|
};
|
|
481
481
|
|
package/lib/logger.js
CHANGED
|
@@ -4,8 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
var util = require('util');
|
|
6
6
|
|
|
7
|
-
var Promise = require('bluebird');
|
|
8
|
-
|
|
9
7
|
var LEVELS = require('./levels');
|
|
10
8
|
var Filterer = require('./filterer');
|
|
11
9
|
|
|
@@ -218,7 +216,7 @@ var proto = {
|
|
|
218
216
|
} else if(promises[0]) {
|
|
219
217
|
return promises[0];
|
|
220
218
|
} else {
|
|
221
|
-
return Promise.
|
|
219
|
+
return Promise.resolve();
|
|
222
220
|
}
|
|
223
221
|
},
|
|
224
222
|
|
|
@@ -240,7 +238,7 @@ var proto = {
|
|
|
240
238
|
if(this.isEnabledFor(LEVELS[level])) {
|
|
241
239
|
promise = this.handle(this.makeRecord(this._name, level, msg, args));
|
|
242
240
|
} else {
|
|
243
|
-
promise = Promise.
|
|
241
|
+
promise = Promise.resolve();
|
|
244
242
|
}
|
|
245
243
|
|
|
246
244
|
return promise;
|
|
@@ -196,15 +196,12 @@ module.exports.compileFormat = compileFormat = function(text, _defaultDateFormat
|
|
|
196
196
|
return source;
|
|
197
197
|
};
|
|
198
198
|
|
|
199
|
-
|
|
199
|
+
const fs = require('fs').promises;
|
|
200
200
|
var glob = require('./re-glob');
|
|
201
|
-
var Promise = require('bluebird');
|
|
202
201
|
var path = require('path');
|
|
203
202
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
var stat = Promise.promisify(fs.stat);
|
|
207
|
-
var unlink = Promise.promisify(fs.unlink);
|
|
203
|
+
var stat = fs.stat;
|
|
204
|
+
var unlink = fs.unlink;
|
|
208
205
|
|
|
209
206
|
//71 file per 354ms, empty 8ms
|
|
210
207
|
function FileRemover(opts) {
|
|
@@ -223,10 +220,12 @@ function compareByTime(f1, f2) {
|
|
|
223
220
|
FileRemover.prototype.deleteOldFiles = function() {
|
|
224
221
|
var that = this;
|
|
225
222
|
|
|
226
|
-
return
|
|
223
|
+
return new Promise((resolve, reject) => {
|
|
224
|
+
glob(this.filesFormat, resolve);
|
|
225
|
+
}).then(function(matchedFiles) {
|
|
227
226
|
return Promise.all(matchedFiles.map(function(file) {
|
|
228
227
|
if(that.timeCache[file])
|
|
229
|
-
return Promise.
|
|
228
|
+
return Promise.resolve([file, that.timeCache[file]]);
|
|
230
229
|
else
|
|
231
230
|
return stat(file).then(function(s) {
|
|
232
231
|
that.timeCache[file] = s.mtime.getTime();
|
|
@@ -242,4 +241,4 @@ FileRemover.prototype.deleteOldFiles = function() {
|
|
|
242
241
|
});
|
|
243
242
|
};
|
|
244
243
|
|
|
245
|
-
module.exports.FileRemover = FileRemover;
|
|
244
|
+
module.exports.FileRemover = FileRemover;
|
package/lib/utils/re-glob.js
CHANGED
|
@@ -68,10 +68,10 @@ function Minimatch(pattern, options) {
|
|
|
68
68
|
|
|
69
69
|
|
|
70
70
|
|
|
71
|
-
module.exports = glob
|
|
71
|
+
module.exports = glob;
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
const fs = require('fs');
|
|
74
|
+
var inherits = require("util").inherits
|
|
75
75
|
, EE = require("events").EventEmitter
|
|
76
76
|
, path = require("path")
|
|
77
77
|
, isDir = {}
|
|
@@ -549,4 +549,4 @@ function absWin (p) {
|
|
|
549
549
|
|
|
550
550
|
function absUnix (p) {
|
|
551
551
|
return p.charAt(0) === "/" || p === ""
|
|
552
|
-
}
|
|
552
|
+
}
|
package/package.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "loggj",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"bluebird": "^3.3.4",
|
|
6
5
|
"chalk": "^1.1.1",
|
|
7
6
|
"lockfile": "^1.0.1",
|
|
8
7
|
"stack-trace": "0.0.9"
|
|
9
8
|
},
|
|
10
9
|
"devDependencies": {
|
|
11
|
-
"mocha": "^2.
|
|
10
|
+
"mocha": "^10.2.0",
|
|
12
11
|
"sinon": "^1.17.3"
|
|
13
12
|
},
|
|
14
13
|
"description": "Fast hierarchical text logger",
|
|
15
14
|
"main": "./lib/index.js",
|
|
16
|
-
"scripts": {
|
|
15
|
+
"scripts": {
|
|
16
|
+
"test": "node_modules/.bin/mocha test --recursive"
|
|
17
|
+
},
|
|
17
18
|
"bugs": "https://github.com/glintik/loggj/issues",
|
|
18
19
|
"repository": {
|
|
19
20
|
"type": "git",
|
package/test/config.js
CHANGED
|
@@ -12,7 +12,7 @@ var rufus = require('../');
|
|
|
12
12
|
var NOW = Date.now();
|
|
13
13
|
var counter = 1;
|
|
14
14
|
function tmp() {
|
|
15
|
-
return path.join(os.
|
|
15
|
+
return path.join(os.tmpdir(),
|
|
16
16
|
'rufus-' + NOW + '-' + process.pid + '-' + (counter++));
|
|
17
17
|
}
|
|
18
18
|
|
|
@@ -69,37 +69,37 @@ describe('basicConfig', function () {
|
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
rufus.info('danger').then(function () {
|
|
72
|
-
assert.
|
|
73
|
-
assert.
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
assert.strictEqual(val, 'danger');
|
|
73
|
+
assert.strictEqual(rufus._level, oldLevel);
|
|
74
|
+
done();
|
|
75
|
+
});
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
it('only works once', function () {
|
|
79
79
|
rufus.basicConfig();
|
|
80
|
-
assert.
|
|
80
|
+
assert.strictEqual(rufus._level, oldLevel);
|
|
81
81
|
|
|
82
82
|
rufus.basicConfig({ level: 'critical' });
|
|
83
|
-
assert.
|
|
84
|
-
assert.
|
|
83
|
+
assert.strictEqual(rufus._handlers.length, 1);
|
|
84
|
+
assert.strictEqual(rufus._level, oldLevel);
|
|
85
85
|
});
|
|
86
86
|
|
|
87
87
|
it('works with file option', function () {
|
|
88
88
|
var name = tmp();
|
|
89
89
|
rufus.basicConfig({ file: name });
|
|
90
|
-
assert.
|
|
91
|
-
assert.
|
|
90
|
+
assert.strictEqual(rufus._handlers.length, 1);
|
|
91
|
+
assert.strictEqual(rufus._handlers[0]._file, name);
|
|
92
92
|
});
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
it('works with level', function () {
|
|
96
96
|
rufus.basicConfig({ level: 'error' });
|
|
97
|
-
assert.
|
|
97
|
+
assert.strictEqual(rufus._level, rufus.ERROR);
|
|
98
98
|
});
|
|
99
99
|
|
|
100
100
|
it('works with format', function () {
|
|
101
101
|
rufus.basicConfig({ format: '%msg'});
|
|
102
|
-
assert.
|
|
102
|
+
assert.strictEqual(rufus._handlers[0]._formatter._format, '%msg');
|
|
103
103
|
});
|
|
104
104
|
|
|
105
105
|
afterEach(function () {
|
|
@@ -149,30 +149,31 @@ describe('config', function () {
|
|
|
149
149
|
|
|
150
150
|
var log = rufus.getLogger('qqq.zzz');
|
|
151
151
|
var handler = log._handlers[0];
|
|
152
|
-
assert.
|
|
152
|
+
assert.strictEqual(log._handlers.length, 1);
|
|
153
153
|
assert(!log.propagate);
|
|
154
154
|
|
|
155
155
|
var msg = handler.format({ message: 'hi', args: [ 'hi' ], levelname: 'BAR'});
|
|
156
|
-
assert.
|
|
156
|
+
assert.strictEqual(msg, 'foo! BAR: hi');
|
|
157
157
|
|
|
158
158
|
log.debug('user').then(function () {
|
|
159
|
-
assert.
|
|
159
|
+
assert.strictEqual(handler.spy.getCallCount(), 0);
|
|
160
160
|
|
|
161
161
|
return log.info('user foo');
|
|
162
162
|
}).then(function () {
|
|
163
|
-
assert.
|
|
164
|
-
assert.
|
|
163
|
+
assert.strictEqual(handler.spy.getCallCount(), 1);
|
|
164
|
+
assert.strictEqual(handler.spy.getLastArgs()[0].message, 'user foo');
|
|
165
165
|
|
|
166
166
|
return log.info('ignore me');
|
|
167
167
|
}).then(function () {
|
|
168
|
-
assert.
|
|
169
|
-
|
|
168
|
+
assert.strictEqual(handler.spy.getCallCount(), 1);
|
|
169
|
+
done();
|
|
170
|
+
});
|
|
170
171
|
});
|
|
171
172
|
|
|
172
173
|
it('should be able to config with just JSON', function () {
|
|
173
174
|
rufus.config(require('./util/config.json'));
|
|
174
175
|
|
|
175
176
|
var log = rufus.getLogger('test.config.json');
|
|
176
|
-
assert.
|
|
177
|
+
assert.strictEqual(log._handlers.length, 2);
|
|
177
178
|
});
|
|
178
179
|
});
|
package/test/console.js
CHANGED
|
@@ -32,7 +32,7 @@ describe('Console replacement', function() {
|
|
|
32
32
|
|
|
33
33
|
after(function() {
|
|
34
34
|
rufus.console.restore();
|
|
35
|
-
assert.
|
|
35
|
+
assert.strictEqual(console.log, mockLog);
|
|
36
36
|
console.log = prevLog;
|
|
37
37
|
rufus._handlers = [];
|
|
38
38
|
});
|
|
@@ -41,14 +41,14 @@ describe('Console replacement', function() {
|
|
|
41
41
|
it('can inject into global scope', function() {
|
|
42
42
|
console.warn('test');
|
|
43
43
|
assert(spy._lastRecord);
|
|
44
|
-
assert.
|
|
44
|
+
assert.strictEqual(spy._lastRecord.message, 'test');
|
|
45
45
|
});
|
|
46
46
|
|
|
47
47
|
it('can generate a name', function() {
|
|
48
48
|
console.log('foo');
|
|
49
|
-
assert.
|
|
49
|
+
assert.strictEqual(spy._lastRecord.name, 'test.console');
|
|
50
50
|
|
|
51
51
|
consoleUtil('bar');
|
|
52
|
-
assert.
|
|
52
|
+
assert.strictEqual(spy._lastRecord.name, 'test.util.console');
|
|
53
53
|
});
|
|
54
54
|
});
|
package/test/formatter.js
CHANGED
|
@@ -12,7 +12,7 @@ var rufus = require('../');
|
|
|
12
12
|
describe('Formatter', function() {
|
|
13
13
|
it('should accept a format string', function() {
|
|
14
14
|
var formatter = new rufus.Formatter('%level');
|
|
15
|
-
assert.
|
|
15
|
+
assert.strictEqual(formatter._format, '%level');
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
it('should accept options', function() {
|
|
@@ -20,7 +20,7 @@ describe('Formatter', function() {
|
|
|
20
20
|
format: '%level'
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
assert.
|
|
23
|
+
assert.strictEqual(formatter._format, '%level');
|
|
24
24
|
});
|
|
25
25
|
|
|
26
26
|
it('should output an Error stack', function() {
|
|
@@ -37,8 +37,7 @@ describe('Formatter', function() {
|
|
|
37
37
|
err: e
|
|
38
38
|
};
|
|
39
39
|
|
|
40
|
-
assert.
|
|
41
|
-
name + ': ' + msg + EOL + e.stack + EOL);
|
|
40
|
+
assert.strictEqual(formatter.format(record), name + ': ' + msg + EOL + e.stack + EOL);
|
|
42
41
|
});
|
|
43
42
|
|
|
44
43
|
it('should allow to set date format', function() {
|
|
@@ -58,6 +57,33 @@ describe('Formatter', function() {
|
|
|
58
57
|
return '0' + val;
|
|
59
58
|
}
|
|
60
59
|
var expected = d.getFullYear() + '-' + pad(d.getMonth() + 1);
|
|
61
|
-
assert.
|
|
60
|
+
assert.strictEqual(formatter.format(record), expected);
|
|
62
61
|
});
|
|
63
|
-
|
|
62
|
+
|
|
63
|
+
it('should format as json', function() {
|
|
64
|
+
var formatter = new rufus.Formatter({
|
|
65
|
+
format: 'json'
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
var e = new Error('boom');
|
|
69
|
+
|
|
70
|
+
let message = 'some message';
|
|
71
|
+
var record = {
|
|
72
|
+
name: 'some name',
|
|
73
|
+
message,
|
|
74
|
+
args: [message, 1, 'abc'],
|
|
75
|
+
levelname: 'INFO',
|
|
76
|
+
pid: 123,
|
|
77
|
+
timestamp: new Date(),
|
|
78
|
+
err: e,
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
let recordExpected = Object.assign({}, record, {
|
|
82
|
+
err: e.stack,
|
|
83
|
+
message: `${message} 1 abc`
|
|
84
|
+
});
|
|
85
|
+
delete recordExpected.args;
|
|
86
|
+
|
|
87
|
+
assert.strictEqual(formatter.format(record), JSON.stringify(recordExpected) + EOL);
|
|
88
|
+
});
|
|
89
|
+
});
|
package/test/handlers.js
CHANGED
|
@@ -15,7 +15,7 @@ var glob = require('../lib/utils/re-glob');
|
|
|
15
15
|
var NOW = Date.now();
|
|
16
16
|
var counter = 1;
|
|
17
17
|
function tmp() {
|
|
18
|
-
return path.join(os.
|
|
18
|
+
return path.join(os.tmpdir(),
|
|
19
19
|
'rufus-' + NOW + '-' + process.pid + '-' + (counter++));
|
|
20
20
|
}
|
|
21
21
|
|
|
@@ -35,12 +35,12 @@ describe('Handler', function () {
|
|
|
35
35
|
describe('constructor', function () {
|
|
36
36
|
it('should accept options', function () {
|
|
37
37
|
var h = new rufus.Handler({ level: rufus.ERROR });
|
|
38
|
-
assert.
|
|
38
|
+
assert.strictEqual(h.level, rufus.ERROR);
|
|
39
39
|
});
|
|
40
40
|
|
|
41
41
|
it('should accept a level', function () {
|
|
42
42
|
var h = new rufus.Handler(rufus.WARN);
|
|
43
|
-
assert.
|
|
43
|
+
assert.strictEqual(h.level, rufus.WARN);
|
|
44
44
|
});
|
|
45
45
|
});
|
|
46
46
|
|
|
@@ -71,12 +71,13 @@ describe('Handler', function () {
|
|
|
71
71
|
|
|
72
72
|
h.addFilter(rufus.makeFilter('foo'));
|
|
73
73
|
h.handle({ name: 'foo' }).then(function () {
|
|
74
|
-
assert.
|
|
74
|
+
assert.strictEqual(lastRecord.name, 'foo');
|
|
75
75
|
|
|
76
76
|
return h.handle({ name: 'foobar' });
|
|
77
77
|
}).then(function () {
|
|
78
78
|
assert.notEqual(lastRecord.name, 'foobar');
|
|
79
|
-
|
|
79
|
+
done();
|
|
80
|
+
});
|
|
80
81
|
});
|
|
81
82
|
});
|
|
82
83
|
|
|
@@ -97,16 +98,16 @@ describe('Stream', function () {
|
|
|
97
98
|
stream: stream
|
|
98
99
|
});
|
|
99
100
|
|
|
100
|
-
assert.
|
|
101
|
-
assert.
|
|
101
|
+
assert.strictEqual(handler.level, rufus.INFO);
|
|
102
|
+
assert.strictEqual(handler._stream, stream);
|
|
102
103
|
});
|
|
103
104
|
|
|
104
105
|
it('should accept just a stream', function () {
|
|
105
106
|
var stream = {};
|
|
106
107
|
var handler = new rufus.handlers.Stream(stream);
|
|
107
108
|
|
|
108
|
-
assert.
|
|
109
|
-
assert.
|
|
109
|
+
assert.strictEqual(handler.level, rufus.NOTSET);
|
|
110
|
+
assert.strictEqual(handler._stream, stream);
|
|
110
111
|
});
|
|
111
112
|
});
|
|
112
113
|
|
|
@@ -125,7 +126,7 @@ describe('Stream', function () {
|
|
|
125
126
|
formatter: new rufus.Formatter('%message%n')
|
|
126
127
|
});
|
|
127
128
|
handler.handle({ message: 'foo', args: ['foo'] }).then(function () {
|
|
128
|
-
assert.
|
|
129
|
+
assert.strictEqual(out, 'foo\n');
|
|
129
130
|
done();
|
|
130
131
|
});
|
|
131
132
|
});
|
|
@@ -144,8 +145,9 @@ describe('Stream', function () {
|
|
|
144
145
|
formatter: new rufus.Formatter('%message%n')
|
|
145
146
|
});
|
|
146
147
|
handler.handle({ message: 'secret', args: ['secret'] }).then(function () {
|
|
147
|
-
assert.
|
|
148
|
-
|
|
148
|
+
assert.strictEqual(out, 'secret\n');
|
|
149
|
+
done();
|
|
150
|
+
});
|
|
149
151
|
});
|
|
150
152
|
});
|
|
151
153
|
});
|
|
@@ -159,15 +161,15 @@ describe('File', function () {
|
|
|
159
161
|
file: filename
|
|
160
162
|
});
|
|
161
163
|
|
|
162
|
-
assert.
|
|
163
|
-
assert.
|
|
164
|
+
assert.strictEqual(handler.level, rufus.WARN);
|
|
165
|
+
assert.strictEqual(handler._file, filename);
|
|
164
166
|
});
|
|
165
167
|
|
|
166
168
|
it('should accept a filename', function () {
|
|
167
169
|
var filename = tmp();
|
|
168
170
|
var handler = new rufus.handlers.File(filename);
|
|
169
171
|
|
|
170
|
-
assert.
|
|
172
|
+
assert.strictEqual(handler._file, filename);
|
|
171
173
|
});
|
|
172
174
|
});
|
|
173
175
|
|
|
@@ -184,7 +186,7 @@ describe('File', function () {
|
|
|
184
186
|
assert.equal(contents.toString(), 'recon\n');
|
|
185
187
|
done();
|
|
186
188
|
});
|
|
187
|
-
})
|
|
189
|
+
});
|
|
188
190
|
});
|
|
189
191
|
});
|
|
190
192
|
});
|
|
@@ -193,8 +195,8 @@ describe('Console', function () {
|
|
|
193
195
|
describe('constructor', function () {
|
|
194
196
|
it('should use stdout and stderr', function () {
|
|
195
197
|
var h = new rufus.handlers.Console();
|
|
196
|
-
assert.
|
|
197
|
-
assert.
|
|
198
|
+
assert.strictEqual(h._out._stream, process.stdout);
|
|
199
|
+
assert.strictEqual(h._err._stream, process.stderr);
|
|
198
200
|
});
|
|
199
201
|
});
|
|
200
202
|
|
|
@@ -214,8 +216,9 @@ describe('Console', function () {
|
|
|
214
216
|
};
|
|
215
217
|
|
|
216
218
|
h.handle({ level: rufus.INFO, message: 'oscar mike', args: ['oscar mike'] }).then(function () {
|
|
217
|
-
assert.
|
|
218
|
-
|
|
219
|
+
assert.strictEqual(val, 'oscar mike\n');
|
|
220
|
+
done();
|
|
221
|
+
});
|
|
219
222
|
});
|
|
220
223
|
|
|
221
224
|
it('should send warn and higher messages to stderr', function (done) {
|
|
@@ -233,8 +236,8 @@ describe('Console', function () {
|
|
|
233
236
|
};
|
|
234
237
|
|
|
235
238
|
h.handle({ level: rufus.WARN, message: 'mayday', args: ['mayday'] }).then(function () {
|
|
236
|
-
assert.
|
|
237
|
-
}).
|
|
239
|
+
assert.strictEqual(val, 'mayday\n');
|
|
240
|
+
}).then(done);
|
|
238
241
|
});
|
|
239
242
|
});
|
|
240
243
|
});
|
|
@@ -251,13 +254,13 @@ describe('Console', function () {
|
|
|
251
254
|
formatter: new rufus.Formatter('%message%n')
|
|
252
255
|
});
|
|
253
256
|
|
|
254
|
-
assert.
|
|
257
|
+
assert.strictEqual(handler._file, filename);
|
|
255
258
|
handler.handle(rec(bytes(60)));
|
|
256
259
|
handler.handle(rec(bytes(50)));
|
|
257
260
|
handler.handle(rec(bytes(45))).then(function () {
|
|
258
|
-
assert.
|
|
259
|
-
assert.
|
|
260
|
-
assert.
|
|
261
|
+
assert.strictEqual(fs.statSync(filename).size, 46);
|
|
262
|
+
assert.strictEqual(fs.statSync(filename + '.1').size, 51);
|
|
263
|
+
assert.strictEqual(fs.statSync(filename + '.2').size, 61);
|
|
261
264
|
}).done(done);
|
|
262
265
|
});
|
|
263
266
|
|
|
@@ -304,9 +307,9 @@ describe('Console', function () {
|
|
|
304
307
|
handler.handle({ message: bytes(55), args: [bytes(55)] });
|
|
305
308
|
handler.handle({ message: bytes(60), args: [bytes(60)] });
|
|
306
309
|
handler.handle({ message: bytes(45), args: [bytes(45)] }).then(function () {
|
|
307
|
-
assert.
|
|
308
|
-
assert.
|
|
309
|
-
assert.
|
|
310
|
+
assert.strictEqual(fs.statSync(filename).size, 46);
|
|
311
|
+
assert.strictEqual(fs.statSync(filename + '.1').size, 61);
|
|
312
|
+
assert.strictEqual(fs.statSync(filename + '.2').size, 56);
|
|
310
313
|
assert(!fs.existsSync(filename + '.3'));
|
|
311
314
|
}).done(done);
|
|
312
315
|
});
|
|
@@ -324,9 +327,9 @@ describe('Console', function () {
|
|
|
324
327
|
handler.handle({ message: bytes(29), args: [bytes(29)] }).then(function () {
|
|
325
328
|
return handler.handle({ message: bytes(31), args: [bytes(31)] });
|
|
326
329
|
}).then(function () {
|
|
327
|
-
assert.
|
|
330
|
+
assert.strictEqual(fs.statSync(filename).size, 62);
|
|
328
331
|
}).done(done);
|
|
329
332
|
});
|
|
330
333
|
});
|
|
331
334
|
});
|
|
332
|
-
*/
|
|
335
|
+
*/
|
package/test/logger.js
CHANGED
|
@@ -32,7 +32,7 @@ describe('Logger', function() {
|
|
|
32
32
|
var logger1 = new Logger(name);
|
|
33
33
|
var logger2 = new Logger(name);
|
|
34
34
|
|
|
35
|
-
assert.
|
|
35
|
+
assert.strictEqual(logger1, logger2);
|
|
36
36
|
});
|
|
37
37
|
|
|
38
38
|
it('should allow add handlers and remove them', function() {
|
|
@@ -40,10 +40,10 @@ describe('Logger', function() {
|
|
|
40
40
|
var handler = new rufus.handlers.Null();
|
|
41
41
|
|
|
42
42
|
logger.addHandler(handler);
|
|
43
|
-
assert.
|
|
43
|
+
assert.strictEqual(logger.getHandlers().length, 1);
|
|
44
44
|
|
|
45
45
|
logger.removeHandler(handler);
|
|
46
|
-
assert.
|
|
46
|
+
assert.strictEqual(logger.getHandlers().length, 0);
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
it('should set by default for child logger log level of its direct parent', function() {
|
|
@@ -54,7 +54,7 @@ describe('Logger', function() {
|
|
|
54
54
|
var childName = parentName + '.' + unique();
|
|
55
55
|
var child = new Logger(childName);
|
|
56
56
|
|
|
57
|
-
assert.
|
|
57
|
+
assert.strictEqual(child.getEffectiveLevel(), rufus.ERROR);
|
|
58
58
|
});
|
|
59
59
|
|
|
60
60
|
it('should make record', function() {
|
|
@@ -67,14 +67,14 @@ describe('Logger', function() {
|
|
|
67
67
|
var args = [ msg, err ];
|
|
68
68
|
var record = logger.makeRecord(name, 'DEBUG', msg, args.slice());
|
|
69
69
|
|
|
70
|
-
assert.
|
|
71
|
-
assert.
|
|
72
|
-
assert.
|
|
73
|
-
assert.
|
|
74
|
-
assert.
|
|
75
|
-
assert.
|
|
76
|
-
assert.
|
|
77
|
-
assert.
|
|
70
|
+
assert.strictEqual(record.name, name);
|
|
71
|
+
assert.strictEqual(record.level, level);
|
|
72
|
+
assert.strictEqual(record.message, msg);
|
|
73
|
+
assert.strictEqual(record.levelname, 'DEBUG');
|
|
74
|
+
assert.strictEqual(record.pid, process.pid);
|
|
75
|
+
assert.strictEqual(record.args.length, args.length - 1); //it is because last arg is Error
|
|
76
|
+
assert.strictEqual(record.args[0], msg);
|
|
77
|
+
assert.strictEqual(record.err, err);
|
|
78
78
|
});
|
|
79
79
|
|
|
80
80
|
/*it('should call its handlers', function() {
|
|
@@ -170,8 +170,8 @@ describe('Logger', function() {
|
|
|
170
170
|
logger.addHandler(h);
|
|
171
171
|
|
|
172
172
|
logger.info('bar').then(null, function(err) {
|
|
173
|
-
assert.
|
|
174
|
-
}).
|
|
173
|
+
assert.strictEqual(err.message, 'foo');
|
|
174
|
+
}).then(done);
|
|
175
175
|
});
|
|
176
176
|
});
|
|
177
177
|
|
|
@@ -182,7 +182,7 @@ module.exports = {
|
|
|
182
182
|
this.slow(300);
|
|
183
183
|
|
|
184
184
|
spawn(false, function(err, stdout, stderr) {
|
|
185
|
-
assert.
|
|
185
|
+
assert.strictEqual(stderr, 'root.ERROR - Uncaught exception handled');
|
|
186
186
|
done();
|
|
187
187
|
});
|
|
188
188
|
},
|
|
@@ -190,8 +190,8 @@ module.exports = {
|
|
|
190
190
|
this.slow(300);
|
|
191
191
|
|
|
192
192
|
spawn(true, function(err, stdout, stderr) {
|
|
193
|
-
assert.
|
|
194
|
-
assert.
|
|
193
|
+
assert.strictEqual(stderr, 'root.ERROR - Uncaught exception handled');
|
|
194
|
+
assert.strictEqual(stdout, 'root.INFO - noexit');
|
|
195
195
|
done();
|
|
196
196
|
});
|
|
197
197
|
}
|
package/test/util/error.js
CHANGED
|
@@ -9,9 +9,9 @@ rufus.addHandler(new rufus.handlers.Console({
|
|
|
9
9
|
}));
|
|
10
10
|
rufus.handleExceptions(process.argv.indexOf('--noexit') === -1);
|
|
11
11
|
|
|
12
|
-
setTimeout(function() {
|
|
12
|
+
/*setTimeout(function() {
|
|
13
13
|
throw new Error('catch me if you can');
|
|
14
|
-
}, 5)
|
|
14
|
+
}, 5);*/
|
|
15
15
|
|
|
16
16
|
setTimeout(function() {
|
|
17
17
|
rufus.info('noexit');
|