Skip to content

Commit

Permalink
added logging level to the prefix
Browse files Browse the repository at this point in the history
  • Loading branch information
bbottema committed Jan 19, 2016
1 parent bcec6aa commit fa83dbb
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 35 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "better-logging-base",
"version": "1.0.0",
"version": "1.1.0",
"repository": {
"type": "git",
"url": "https://github.com/better-js-logging/better-logging-base.git"
Expand Down
19 changes: 12 additions & 7 deletions dist/logging-enhancer.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
config.logLevels = config.logLevels || [];
return function() {
if (levelPassesThreshold(context, level, config)) {
var enhancedArguments = enhanceLogline(arguments, context, datetimePattern, datetimeLocale, prefixPattern);
var enhancedArguments = enhanceLogline(arguments, context, level, datetimePattern, datetimeLocale, prefixPattern);
loggingFunc.apply(null, enhancedArguments);
return enhancedArguments;
}
Expand All @@ -42,8 +42,8 @@
}
}

function enhanceLogline(args, context, datetimePattern, datetimeLocale, prefixPattern) {
var prefix = generatePrefix(context, datetimePattern, datetimeLocale, prefixPattern);
function enhanceLogline(args, context, level, datetimePattern, datetimeLocale, prefixPattern) {
var prefix = generatePrefix(context, level, datetimePattern, datetimeLocale, prefixPattern);
var processedArgs = maybeApplySprintf([].slice.call(args));
return [prefix].concat([].slice.call(processedArgs));

Expand All @@ -69,7 +69,7 @@
}
}

function generatePrefix(context, datetimePattern, datetimeLocale, prefixPattern) {
function generatePrefix(context, level, datetimePattern, datetimeLocale, prefixPattern) {
var dateStr = '';
if (typeof moment !== 'undefined') {
dateStr = moment().locale(datetimeLocale).format(datetimePattern);
Expand All @@ -79,13 +79,18 @@
var timeStr = new Date().toTimeString().match(/^([0-9]{2}:[0-9]{2}:[0-9]{2})/)[0];
dateStr = d.getDate() + '-' + (d.getMonth() + 1) + '-' + d.getFullYear() + ' ' + timeStr;
}

for (var levelName in self.LEVEL) {
if (self.LEVEL[levelName] === level) { break; }
}
levelName = levelName.toLowerCase();

if (typeof sprintf !== 'undefined') {
return sprintf(prefixPattern, dateStr, context);
return sprintf(prefixPattern, dateStr, context, levelName);
}
else {
// use fixed layout: '%s::[%s]> '
return dateStr + '::[' + context + ']> ';
// use fixed layout: '%s::[%s]%s> '
return dateStr + '::' + context + '::' + levelName + '> ';
}
}
};
Expand Down
2 changes: 1 addition & 1 deletion dist/logging-enhancer.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "better-logging-base",
"version": "1.0.0",
"version": "1.1.0",
"description": "> Utility to produce better logging statements including level management",
"main": "logging-enhancer.min.js",
"scripts": {
Expand Down
42 changes: 24 additions & 18 deletions spec/logging-enhancer-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,27 +24,33 @@ describe('logging-enhancer', function() {
});

it('should log simple strings with various prefix configurations', function() {
var f_none = enh.enhanceLogging(dummy.trace, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '');
var f_both = enh.enhanceLogging(dummy.trace, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%s(%s): ');
var f_date1 = enh.enhanceLogging(dummy.warn, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%s: ');
var f_date2 = enh.enhanceLogging(dummy.warn, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%1$s: ');
var f_context = enh.enhanceLogging(dummy.error, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%2$s: ');
var f_reversed = enh.enhanceLogging(dummy.debug, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%2$s(%1$s): ');
var f_none = enh.enhanceLogging(dummy.trace, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '');
var f_both = enh.enhanceLogging(dummy.trace, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%s(%s): ');
var f_both_level = enh.enhanceLogging(dummy.trace, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%s(%s)%s: ');
var f_date1 = enh.enhanceLogging(dummy.warn, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%s: ');
var f_date2 = enh.enhanceLogging(dummy.warn, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%1$s: ');
var f_context = enh.enhanceLogging(dummy.error, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%2$s: ');
var f_reversed = enh.enhanceLogging(dummy.debug, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%2$s(%1$s): ');
var f_level = enh.enhanceLogging(dummy.debug, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%3$s: ');
var f_level_reversed = enh.enhanceLogging(dummy.debug, enh.LEVEL.TRACE, 'dummy', {}, 'dddd hh', 'en', '%2$s(%3$s): ');

var datestr = moment().format('dddd hh'); // as we can't mock momentjs, let's at least have an hour resolution

expect(f_none('Hello World!')) .toEqual(['', 'Hello World!']);
expect(f_both('Hello World!')) .toEqual([datestr + '(dummy): ', 'Hello World!']);
expect(f_both('%%')) .toEqual([datestr + '(dummy): ', '%%']);
expect(f_date1('Hello World!')) .toEqual([datestr + ': ', 'Hello World!']);
expect(f_date2('Hello World!')) .toEqual([datestr + ': ', 'Hello World!']);
expect(f_context('Hello World!')) .toEqual(['dummy: ', 'Hello World!']);
expect(f_reversed('Hello World!')) .toEqual(['dummy(' + datestr + '): ', 'Hello World!']);

expect(counters[TRACE]).toBe(3);
expect(f_none('Hello World!')) .toEqual(['', 'Hello World!']);
expect(f_both('Hello World!')) .toEqual([datestr + '(dummy): ', 'Hello World!']);
expect(f_both('%%')) .toEqual([datestr + '(dummy): ', '%%']);
expect(f_both_level('Hello World!')) .toEqual([datestr + '(dummy)trace: ', 'Hello World!']);
expect(f_date1('Hello World!')) .toEqual([datestr + ': ', 'Hello World!']);
expect(f_date2('Hello World!')) .toEqual([datestr + ': ', 'Hello World!']);
expect(f_context('Hello World!')) .toEqual(['dummy: ', 'Hello World!']);
expect(f_reversed('Hello World!')) .toEqual(['dummy(' + datestr + '): ', 'Hello World!']);
expect(f_level('Hello World!')) .toEqual(['trace: ', 'Hello World!']);
expect(f_level_reversed('Hello World!')) .toEqual(['dummy(trace): ', 'Hello World!']);

expect(counters[TRACE]).toBe(4);
expect(counters[WARN]).toBe(2);
expect(counters[ERROR]).toBe(1);
expect(counters[DEBUG]).toBe(1);
expect(counters[DEBUG]).toBe(3);
});

it('should log with sprintf replacements', function() {
Expand Down Expand Up @@ -107,8 +113,8 @@ describe('logging-enhancer', function() {
enh = new (require('../src/logging-enhancer.js').LoggingEnhancer)(undefined, moment);

var f = enh.enhanceLogging(dummy.debug, enh.LEVEL.TRACE, 'dummy', {}, 'YYYY', 'en', '');
expect(f('Hello World!')).toEqual([moment().year() + '::[dummy]> ', 'Hello World!']);
expect(f('%s %s!', 'Hello', 'World', [1,2,3])).toEqual([moment().year() + '::[dummy]> ', '%s %s!', 'Hello', 'World', [1,2,3]]);
expect(f('Hello World!')).toEqual([moment().year() + '::dummy::trace> ', 'Hello World!']);
expect(f('%s %s!', 'Hello', 'World', [1,2,3])).toEqual([moment().year() + '::dummy::trace> ', '%s %s!', 'Hello', 'World', [1,2,3]]);

expect(counters[DEBUG]).toBe(2);
});
Expand Down
19 changes: 12 additions & 7 deletions src/logging-enhancer.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
config.logLevels = config.logLevels || [];
return function() {
if (levelPassesThreshold(context, level, config)) {
var enhancedArguments = enhanceLogline(arguments, context, datetimePattern, datetimeLocale, prefixPattern);
var enhancedArguments = enhanceLogline(arguments, context, level, datetimePattern, datetimeLocale, prefixPattern);
loggingFunc.apply(null, enhancedArguments);
return enhancedArguments;
}
Expand All @@ -42,8 +42,8 @@
}
}

function enhanceLogline(args, context, datetimePattern, datetimeLocale, prefixPattern) {
var prefix = generatePrefix(context, datetimePattern, datetimeLocale, prefixPattern);
function enhanceLogline(args, context, level, datetimePattern, datetimeLocale, prefixPattern) {
var prefix = generatePrefix(context, level, datetimePattern, datetimeLocale, prefixPattern);
var processedArgs = maybeApplySprintf([].slice.call(args));
return [prefix].concat([].slice.call(processedArgs));

Expand All @@ -69,7 +69,7 @@
}
}

function generatePrefix(context, datetimePattern, datetimeLocale, prefixPattern) {
function generatePrefix(context, level, datetimePattern, datetimeLocale, prefixPattern) {
var dateStr = '';
if (typeof moment !== 'undefined') {
dateStr = moment().locale(datetimeLocale).format(datetimePattern);
Expand All @@ -79,13 +79,18 @@
var timeStr = new Date().toTimeString().match(/^([0-9]{2}:[0-9]{2}:[0-9]{2})/)[0];
dateStr = d.getDate() + '-' + (d.getMonth() + 1) + '-' + d.getFullYear() + ' ' + timeStr;
}

for (var levelName in self.LEVEL) {
if (self.LEVEL[levelName] === level) { break; }
}
levelName = levelName.toLowerCase();

if (typeof sprintf !== 'undefined') {
return sprintf(prefixPattern, dateStr, context);
return sprintf(prefixPattern, dateStr, context, levelName);
}
else {
// use fixed layout: '%s::[%s]> '
return dateStr + '::[' + context + ']> ';
// use fixed layout: '%s::[%s]%s> '
return dateStr + '::' + context + '::' + levelName + '> ';
}
}
};
Expand Down

0 comments on commit fa83dbb

Please sign in to comment.