Skip to content

Commit a8ee4a1

Browse files
committed
feat(formatter): add logentries formatter
1 parent 097a0d7 commit a8ee4a1

File tree

5 files changed

+76
-22
lines changed

5 files changed

+76
-22
lines changed

package-lock.json

Lines changed: 17 additions & 17 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/formatter/index.js

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
'use strict';
22

3-
const jsonFormatter = require('./json');
4-
const debugFormatter = require('./debug');
5-
63
module.exports = {
7-
json: jsonFormatter,
8-
debug: debugFormatter
4+
json: require('./json'),
5+
debug: require('./debug'),
6+
logentries: require('./logentries')
97
};

src/formatter/json.spec.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict';
2+
3+
const jsonFormatter = require('./json');
4+
5+
describe('json formatter', function() {
6+
it('should stringify object to json', function() {
7+
expect(jsonFormatter({ name: 'debugger' })).to.eql('{"name":"debugger"}');
8+
});
9+
});

src/formatter/logentries.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
'use strict';
2+
3+
const isNumeric = (value) => !isNaN(parseFloat(value)) && isFinite(value);
4+
5+
const isString = (value) => typeof value === 'string' || value instanceof String;
6+
7+
const convertToTag = (value, key) => {
8+
if (isString(value)) {
9+
value = JSON.stringify(value);
10+
} else if(isNumeric(value)) {
11+
value = value.toString();
12+
} else {
13+
value = '"' + JSON.stringify(value) + '"';
14+
}
15+
16+
return key + '=' + value;
17+
};
18+
19+
module.exports = function(data) {
20+
return Object
21+
.keys(data)
22+
.map(key => convertToTag(data[key], key))
23+
.join(' ');
24+
};

src/formatter/logentries.spec.js

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
'use strict';
2+
3+
const logentriesFormatter = require('./logentries');
4+
5+
describe('logentries formatter', function() {
6+
it('should stringify single field to key value pairs', function() {
7+
expect(logentriesFormatter({ name: 'debugger' })).to.eql('name="debugger"');
8+
});
9+
10+
it('should stringify multiple fields separated', function() {
11+
expect(logentriesFormatter({ name: 'debugger', namespace: 'it' })).to.eql('name="debugger" namespace="it"');
12+
});
13+
14+
it('should not print numbers as string', function() {
15+
expect(logentriesFormatter({ name: 'debugger', duration: 10, percent: 1.5 }))
16+
.to.eql('name="debugger" duration=10 percent=1.5');
17+
});
18+
19+
it('should json stringify nested objects', function() {
20+
expect(logentriesFormatter({ name: 'debugger', nested: { inner: 10 } }))
21+
.to.eql('name="debugger" nested="{"inner":10}"');
22+
});
23+
});

0 commit comments

Comments
 (0)