Skip to content

Commit

Permalink
Emit a NAME even on the root logger, even if the level is not loggable
Browse files Browse the repository at this point in the history
  • Loading branch information
Nick Santos committed Apr 14, 2016
1 parent a9f8c15 commit a5f66a6
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 5 deletions.
7 changes: 3 additions & 4 deletions lib/logger.js
Expand Up @@ -186,14 +186,13 @@ Logger.prototype._log = function(level, args) {
//
// Event emitting plan in sequence:
//
// * Emit on global key from rootLogger.
// * Emit on global key from rootLogger if the event is loggable.
// * Emit a LEVEL event on the rootLogger
// * For each name in the ancestor chain, emit an event of that name.
if (!this.isLoggable(level)) {
return
if (this.isLoggable(level)) {
rootLogger.emit('', logRecord);
}

rootLogger.emit('', logRecord);
rootLogger.emit(level, logRecord);

var logger = this;
Expand Down
44 changes: 44 additions & 0 deletions lib/logger_test.js
Expand Up @@ -2,6 +2,10 @@
var Logger = require('./logger');
var LogLevel = require('./level');

exports.setUp = function (done) {
Logger._instance = null;
done();
};

exports.testDefaultLogLevel = function(test) {
var logger = new Logger('test');
Expand Down Expand Up @@ -104,3 +108,43 @@ exports.testCloneWithNewMetadata = function(test) {

test.done();
};


exports.testFineEvent = function(test) {
var logger = new Logger('test');
var rootLogger = Logger.getSingleton();

var records = {
global: [],
fine: [],
test: []
}

rootLogger.on('', function (record) {
records.global.push(record)
})
rootLogger.on(LogLevel.FINE, function (record) {
records.fine.push(record)
})
rootLogger.on('test', function (record) {
records.test.push(record)
})


logger.fine('hello');
test.equal(0, records.global.length);
test.equal(1, records.fine.length);
test.equal(1, records.test.length);

logger.finer('hello');
test.equal(0, records.global.length);
test.equal(1, records.fine.length);
test.equal(2, records.test.length);

logger.info('hello');
test.equal(1, records.global.length);
test.equal(1, records.fine.length);
test.equal(3, records.test.length);

test.done();
};
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name" : "logg",
"version" : "0.3.3",
"version" : "0.3.4",
"description" : "Logging library that allows for hierarchical loggers, multiple log levels, and flexible watching of log records.",
"keywords" : ["log", "logging", "logger", "hierarchical", "handler", "watcher"],
"repository" : {
Expand Down

0 comments on commit a5f66a6

Please sign in to comment.