今天向nodejs邮件列表发了一封关于Logging Facade的邮件,以我的英文一定错漏百出,能看懂就行了。贴在这里,跟没订阅列表的朋友们分享一下。
Long long ago, there are several logging system in java community, such as Jakarakt Common Logging, log4j and Java.utils.Logger, many libraries depends on one logging system, the high-level applications have to include different logging system in one app, at last a new project called SLF4J(Simple Log Facade for java) comes out try to terminate this chaotic situation.
Actually what SLF4j has done should be done by java SE, but what JUL try to do is logging but not logging facade, so JUL actually try to make itself as the ONE logging, and forbid JAVA community evolve logging system, as we knows, JUL lose.
And then, let's take a look nodejs community.
I ever read code below:
And I saw module API like this:
And also some module we can NOT inject logger, they log into console or somewhere the module defined.
I think we need pay more attention to the logging system for nodejs, and I have thought for a few points to start this discussion
1. module depends logging facade but not logger implementation.
2. the logging facade should be part of core nodejs as standard.
3. let application choose logger implementation.
4. let application define logging strategy.
Long long ago, there are several logging system in java community, such as Jakarakt Common Logging, log4j and Java.utils.Logger, many libraries depends on one logging system, the high-level applications have to include different logging system in one app, at last a new project called SLF4J(Simple Log Facade for java) comes out try to terminate this chaotic situation.
Actually what SLF4j has done should be done by java SE, but what JUL try to do is logging but not logging facade, so JUL actually try to make itself as the ONE logging, and forbid JAVA community evolve logging system, as we knows, JUL lose.
And then, let's take a look nodejs community.
I ever read code below:
//foo.js
module.exports = function(logger){
return {
foo: function(){
//do something
logger.info('something');
}
}
}
//fee.js
logger = createAppLogger();
foo = require('foo')(logger);
foo.foo();
And I saw module API like this:
var logger = createAppLogger();
var foo = new Foo();
foo.logger = logger;
And also some module we can NOT inject logger, they log into console or somewhere the module defined.
I think we need pay more attention to the logging system for nodejs, and I have thought for a few points to start this discussion
1. module depends logging facade but not logger implementation.
2. the logging facade should be part of core nodejs as standard.
3. let application choose logger implementation.
4. let application define logging strategy.