在Log4js中禁用控制台打印
我刚刚在我的Node.js应用程序中使用Log4js启用了日志记录。 我已使用https://github.com/nomiddlename/log4js-node的配置选项,它工作正常。在Log4js中禁用控制台打印
它将日志写入日志文件以及控制台中。 我不希望将其打印在控制台中。 无法弄清楚如何配置它。 非常抱歉问这个愚蠢的问题。
在socket.io中,您可以设置一个custom logger.我试着分配一个log4js记录器,但是这导致了一个错误。我怀疑你(和我)将不得不编写一个包装器,它将日志记录调用传递给log4js。
这是我最后写代码:
var LogWrapper = function() {
this.logger = log4js.getLogger('socket.io');
};
LogWrapper.prototype.error = function() {
this.logger.error.apply(this.logger, arguments);
};
LogWrapper.prototype.warn = function() {
this.logger.warn.apply(this.logger, arguments);
};
LogWrapper.prototype.info = function() {
this.logger.info.apply(this.logger, arguments);
};
LogWrapper.prototype.debug = function() {
this.logger.debug.apply(this.logger, arguments);
};
io.set('logger', new LogWrapper());
我有这个问题以及建立一个基于控制台的实用程序。我希望该实用程序将其输出写入控制台,但将日志保存在文件中。无论我如何尝试,我似乎都无法分开两个输出缓冲区。
的解决方案是一个类别添加到控制台的appender在log4js.configure调用,就像这样:
var log4js = require('log4js');
log4js.configure({
appenders: [
{ type: 'console', category: 'thiswillgotoconsole' },
{ type: 'file', filename: 'myLog.log', category: 'thiswillgotofile' }
]
});
var logger = log4js.getLogger('thiswillgotofile');
logger.setLevel('debug');
logger.debug('thiswillgotofile');
console.log('thiswillgotoconsole');
如果有人应该在此,而旧线绊倒,请注意,(同时?)也可以通过配置禁用日志记录控制台。
只需设置 replaceConsole: true
在配置 @see Example on github
不知道它是否真的可以解决你计划要达到什么,但可以肯定你会做日志从控制台消失这样做
下面是我如何得到这个工作:
问题是appender config的默认类别是'[all]'。 设置类别为“[默认]”,它将仅适用于与“得到”了一个类别伐木工人:log4js.getLogger()
{
appenders: [
{ type: 'console', category: '[default]' },
{ type: 'file', filename: 'logs/cheese.log', category: 'cheese' }
]
}
更多的解释:
你可能有/有东西看起来像例子中的appender配置
{
appenders: [
{ type: 'console' },
{ type: 'file', filename: 'logs/cheese.log', category: 'cheese' }
]
}
然后您可以通过使用或不使用类别名称获得日志:
var logger = log4js.getLogger();
var cheeseLogger = log4js.getLogger('cheese');
logger.info(1)
cheeseLogger(2)
输出:
[2016-10-25 15:43:06.225] [INFO] [default] - 1
[2016-10-25 15:43:06.225] [INFO] cheese - 2
日志/ cheese.log:
[2016-10-25 15:43:06.225] [INFO] cheese - 2