2012-03-04 318 views

回答

1

在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()); 
0

我有这个问题以及建立一个基于控制台的实用程序。我希望该实用程序将其输出写入控制台,但将日志保存在文件中。无论我如何尝试,我似乎都无法分开两个输出缓冲区。

的解决方案是一个类别添加到控制台的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'); 
0

如果有人应该在此,而旧线绊倒,请注意,(同时?)也可以通过配置禁用日志记录控制台。

只需设置 replaceConsole: true 在配置 @see Example on github

不知道它是否真的可以解决你计划要达到什么,但可以肯定你会做日志从控制台消失这样做

0

下面是我如何得到这个工作:

问题是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