2012-03-04 15 views

Odpowiedz

1

W socket.io można ustawić custom logger. Próbowałem przypisać logger log4js, ale to spowodowało błąd. Podejrzewam, że ty (i ja) będzie musiał napisać wrapper, który przekazuje logowanie do log4js.

Oto kod skończyło się na piśmie:

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

Miałem również ten problem, budując narzędzie oparte na konsoli. Chciałem, aby narzędzie zapisało jego dane wyjściowe do konsoli, ale zachowuje dzienniki w pliku. Bez względu na to, jak próbowałem, nie mogłem oddzielić dwóch buforów wyjściowych.

Rozwiązaniem było dodać kategorię do appender konsoli w zaproszeniu log4js.configure, tak:

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

jeśli ktoś powinien natknąć się na tym dość starym wątku, proszę pamiętać, że jest (w międzyczasie?) również możliwość wyłączenia rejestrowania konsoli przez konfigurację.

Wystarczy ustawić replaceConsole: true podczas konfigurowania @see Example on github

nie wiem, czy to naprawdę rozwiązuje to, co planuje się osiągnąć, ale na pewno będziesz się dzienniki znikną z konsoli wykonując tak

0

Oto, jak to zrobiłem:

Problem polega na tym, że domyślną kategorią dla konfiguracji aplikacji jest "[wszystkie]". Ustaw kategorię „[domyślnie]” i będzie mieć zastosowanie wyłącznie do rejestratorów, które są „otrzymali dostęp” z zewnątrz kategoriach: log4js.getLogger()

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

Więcej wyjaśnienie:

Prawdopodobnie miały/mają coś, co wygląda jak na przykład appender config

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

a następnie dostać się do rejestratora przez z lub bez nazwy kategorii:

var logger = log4js.getLogger(); 
var cheeseLogger = log4js.getLogger('cheese'); 

logger.info(1) 
cheeseLogger(2) 

wyjściowa:

[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