Отключить консольную печать в Log4js - PullRequest
7 голосов
/ 04 марта 2012

Я только что включил ведение журнала с использованием Log4js в своем приложении Node.js.Я использовал параметр конфигурации из https://github.com/nomiddlename/log4js-node, и он работает нормально.

Он записывает журналы в файл журнала, а также в консоль. Я не хочу, чтобы это печаталось в консоли. Не могу понять, как это настроить.ужасно жаль задавать этот глупый вопрос.

Ответы [ 5 ]

10 голосов
/ 24 апреля 2012

Используйте log4js.clearAppenders() перед добавлением необходимых вам приложений.

1 голос
/ 08 апреля 2012

В socket.io вы можете установить пользовательский регистратор . Я попытался назначить регистратор 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 голосов
/ 26 октября 2016

Вот как я заставил это работать:

Проблема в том, что по умолчанию для конфигурации appender выбрана '[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

logs / cheese.log:

[2016-10-25 15:43:06.225] [INFO] cheese - 2
0 голосов
/ 31 декабря 2014

Если кто-то должен наткнуться на этот довольно старый поток, обратите внимание (в то же время?), Есть также возможность отключить регистрацию консоли по конфигурации.

Просто установить replaceConsole: true при настройке @see Пример на github

Не знаю, действительно ли это решает то, что вы планировали достичь, но наверняка вы заставите логи исчезнуть с консоли, сделав так

0 голосов
/ 08 сентября 2014

У меня тоже была эта проблема при создании консольной утилиты. Я хотел, чтобы утилита записывала свой вывод на консоль, но сохраняла логи в файле. Независимо от того, как я пытался, я не мог разделить два выходных буфера.

Решением было добавить категорию для консольного приложения в вызове 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');
...