UNPKG

4.6 kBJavaScriptView Raw
1// Copyright (c) 2015 Uber Technologies, Inc.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a copy
4// of this software and associated documentation files (the "Software"), to deal
5// in the Software without restriction, including without limitation the rights
6// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7// copies of the Software, and to permit persons to whom the Software is
8// furnished to do so, subject to the following conditions:
9//
10// The above copyright notice and this permission notice shall be included in
11// all copies or substantial portions of the Software.
12//
13// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19// THE SOFTWARE.
20
21var path = require('path');
22var os = require('os');
23var fs = require('fs');
24var uuid = require('uuid');
25var test = require('tape');
26var dateFormat = require('date-format');
27var rimraf = require('rimraf');
28
29var captureStdio = require('./lib/capture-stdio.js');
30var Logger = require('../logger.js');
31var DiskBackend = require('../backends/disk.js');
32var FileBackend = require('../backends/file.js');
33var ConsoleBackend = require('../backends/console.js');
34
35test('disk logging', function (assert) {
36 var loc = path.join(os.tmpDir(), uuid());
37
38 var logger = Logger({
39 meta: {
40 team: 'rt',
41 project: 'foobar'
42 },
43 backends: {
44 disk: DiskBackend({
45 folder: loc
46 })
47 }
48 });
49
50 assert.ok(logger);
51 assert.equal(typeof logger.info, 'function');
52
53 logger.info('some message', {
54 some: 'object'
55 }, function (err) {
56 assert.ifError(err);
57
58 var fileUri = 'rt-foobar.log-' +
59 dateFormat('yyyyMMdd');
60
61 fs.readdir(loc, function (err, files) {
62 assert.ifError(err);
63
64 assert.deepEqual(files, [fileUri]);
65
66 fs.readFile(path.join(loc, fileUri), function (err, buf) {
67 assert.ifError(err);
68
69 buf = String(buf);
70 assert.ok(buf.indexOf('some message') !== -1);
71 assert.ok(buf.indexOf('some=object') !== -1);
72
73 rimraf(loc, assert.end);
74 });
75 });
76 });
77});
78
79test('file logging', function (assert) {
80 var loc = path.join(os.tmpDir(), uuid());
81
82 var logger = Logger({
83 meta: {
84 team: 'rt',
85 project: 'foobar'
86 },
87 backends: {
88 file: FileBackend({
89 fileName: path.join(loc, 'rt-foobar.log')
90 })
91 }
92 });
93
94 assert.ok(logger);
95 assert.equal(typeof logger.info, 'function');
96
97 logger.info('some message', {
98 some: 'object'
99 }, function (err) {
100 assert.ifError(err);
101
102 var fileUri = 'rt-foobar.log';
103
104 fs.readdir(loc, function (err, files) {
105 assert.ifError(err);
106
107 assert.deepEqual(files, [fileUri]);
108
109 fs.readFile(path.join(loc, fileUri), function (err, buf) {
110 assert.ifError(err);
111
112 var entry = JSON.parse(buf);
113 assert.equal(entry.message, 'some message');
114 assert.equal(entry.some, 'object');
115
116 rimraf(loc, assert.end);
117 });
118 });
119 });
120});
121
122
123test('works with multiple backends', function (assert) {
124 var loc = path.join(os.tmpDir(), uuid());
125
126 var logger = Logger({
127 meta: {
128 team: 'rt',
129 project: 'foobar'
130 },
131 backends: {
132 disk: DiskBackend({
133 folder: loc
134 }),
135 console: ConsoleBackend()
136 }
137 });
138
139 assert.ok(captureStdio('info: hello foo=bar', function () {
140 logger.info('hello', { foo: 'bar' }, onlog);
141 }));
142
143 function onlog(err) {
144 assert.ifError(err);
145
146 var fileUri = path.join(loc, 'rt-foobar.log-' +
147 dateFormat('yyyyMMdd'));
148
149 fs.readFile(fileUri, function (err, buf) {
150 assert.ifError(err);
151
152 buf = String(buf);
153
154 assert.ok(buf.indexOf('hello') !== -1);
155 assert.ok(buf.indexOf('foo=bar') !== -1);
156
157 rimraf(loc, assert.end);
158 });
159 }
160});