Как я могу зарегистрировать Socket.io через Winston?
Я хотел бы использовать Winston в качестве регистратора для Socket.io. Я видел эту проблему, где говорится:
var io = require('socket.io').listen(8080);
io.set('logger', { debug: <log function>, info: … , error: .., warn: .. })
К сожалению, не описано, как должно выглядеть log function
.
Некоторые игры и просмотр документации документации Socket.io сказали мне, что нет фиксированного набора параметров: есть сообщения журнала с одним, двумя и тремя параметрами. Возможно, есть еще больше, я не знаю.
Я думаю, что это не очень хорошая практика иметь число параметров undefined, особенно если это ваш интерфейс к внешним компонентам.
В любом случае... есть ли у кого-нибудь опыт? Может ли кто-нибудь указать, на что нужно следить?
Ответы
Ответ 1
Кажется, это отлично работает для меня
var io = require('socket.io').listen(server, {
logger: {
debug: winston.debug,
info: winston.info,
error: winston.error,
warn: winston.warn
}
});
В качестве бонуса, установив логгер в том же вызове, что и .listen()
, вы поймаете весь выход журнала из Socket.IO. Обратите внимание, что вы должны просто передать winston
вместо этого объекта, но он не работает для меня, поэтому вместо этого я разместил это решение.
Ответ 2
Вы можете просто подключить экземпляр winston в качестве объекта журнала:
var winston = require('winston');
io.set('logger', winston);
Ответ 3
Так как параметр logger socket.io v1.0 больше не работает.
Они переключились на debug
Вы можете обратиться к этой проблеме на как настроить Winston с socket.io