Я люблю Winston и использую его во всех своих проектах. Теперь мне нужно войти на сервер системного журнала в одном из моих приложений. Я подумал: "Нет проблем. У Winston есть для этого транспорт. Легко!"
Но я нашел проблему. Уровни журнала между npm (консоль) и системным журналом несовместимы. Пример:
В моем приложении я настроил свои журналы (в основном) следующим образом
// To use syslog stuff. Commented out for the initial example
//winston.setLevels(winston.config.syslog.levels);
// Console logging should have timestamps which are off by default
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {timestamp: true});
// Add my syslog transport
winston.add(
winston.transports.Syslog,
{
level: 'info',
host: config.app.syslog.host,
facility: config.app.syslog.facility,
json: false
}
));
На данный момент все, что касается моего ведения журнала консоли, отлично. я могу
winston.info('Info');
winston.error('Error');
и я получаю 2 журнала консоли.
Но когда я раскомментирую часть winston.setLevels(winston.config.syslog.levels);
, чтобы правильно использовать уровни системного журнала, я больше не получаю никакого вывода в winston.error('Error')
.
«Хмммм», — подумал я. «Возможно, проблема в том, что мой уровень журнала установлен на« информация », потому что уровни info
и error
инвертированы в своем порядке между сопоставлениями npm и syslog, и, возможно, Winston рассматривает только увеличение уровней журнала».
value | npm level | syslog level
---------+-------------+----------------
0 | silly | emerg
1 | debug | alert
2 | verbose | crit
3 | INFO | ERROR
4 | warn | warning
5 | ERROR | notice
6 | | INFO
7 | | debug
Вооружившись этой теорией, я поставил level: error
и попробовал еще раз. И снова тот же результат.
Кто-нибудь заставил это работать, чтобы я мог просто
var logger = require('winston');
logger.info('Info');
logger.error('Error');
в любых модулях, которые мне нравятся после первоначальной настройки? Каждый вызов журнала должен записывать в мою консоль И в мой системный журнал.