在Log4js中禁用控制台打印

时间:2012-03-04 06:10:05

标签: node.js logging log4js-node

我刚在Node.js应用程序中使用Log4js启用了日志记录。 我使用了https://github.com/nomiddlename/log4js-node中的配置选项,它运行正常。

它将日志写入日志文件以及控制台中。 我不希望在控制台中打印它。 无法弄清楚如何配置它。 非常抱歉地问这个愚蠢的问题。

5 个答案:

答案 0 :(得分:10)

在添加要使用的追加者之前使用log4js.clearAppenders()

答案 1 :(得分: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());

答案 2 :(得分:0)

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

解决方案是在log4js.configure调用中向控制台appender添加一个类别,如下所示:

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');

答案 3 :(得分:0)

如果有人偶然发现这个相当旧的帖子,请注意(同时?)还可以通过配置禁用日志记录。

简单地设定 replaceConsole: true 配置时 @see Example on github

不知道它是否真的解决了你计划实现的目标,但肯定会通过这样做使日志从控制台中消失

答案 4 :(得分:0)

以下是我如何使用它:

问题是appender配置的默认类别是'[all]'。 将类别设置为“[默认]”,它仅适用于没有类别的“已获取”的记录器:log4js.getLogger()

{
   appenders: [
     { type: 'console', category: '[default]' },
     { type: 'file', filename: 'logs/cheese.log', category: 'cheese' }
   ]
}

更多解释

你可能有/看起来像示例appender config

{
  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