Szukałem w najlepszych systemów rejestrowania węzła: npmlog
, log4js
, bunyan
i winston
i postanowił wykorzystać winston
za posiadanie najbardziej npm
miesięczne pobieranie.Jak rejestrować obiekty i tablice JavaScript w Winston, jak robi to plik console.log?
Co chcę skonfigurować to niestandardowy rejestrator, który będę mógł używać w środowisku programistycznym z logger.debug(...)
, które nie będzie rejestrować niczego w środowisku produkcyjnym. Pomoże mi to, gdy będę w środowisku programistycznym, nie będę musiał nic pisać, ponieważ zobaczę wszystkie wyniki.
To co mam teraz:
var level = 'debug';
if (process.env.NODE_ENV !== 'development'){
level = 'production'; // this will never be logged!
}
var logger = new winston.Logger({
transports: [
// some other loggings
new winston.transports.Console({
name: 'debug-console',
level: level,
prettyPrint: true,
handleExceptions: true,
json: false,
colorize: true
})
],
exitOnError: false // don't crush no error
});
Problem pojawia się, gdy próbuję się zalogować JavaScript Object
lub JavaScript Array
. Z wersją Object
muszę wykonać toJSON()
, a dla Array
potrzebuję najpierw JSON.stringify()
, a następnie JSON.parse()
.
To nie jest miłe napisać cały czas to metody, po prostu coś, co chcę zalogować. Co więcej, nie jest to nawet przyjazne dla zasobów, ponieważ te metody formatowania muszą być wykonane zanim logger.debug()
zorientuje się, że jest na etapie produkcji i że nie powinien logować go w pierwszej kolejności (w zasadzie analizuje argumenty przed wywołaniem funkcji). Po prostu podoba mi się, jak stary-fashined console.log()
rejestruje obiekty i tablice JavaScript.
Teraz, pisząc to pytanie, odkryłem, że istnieje sposób opisywania custom format dla każdego obiektu Winston transports
. Czy to sposób na to, czy jest jakiś inny sposób?
podać jakieś wyjaśnienia na odpowiedź, dlaczego to działa tak lub co PO robi źle. Wklejanie kodu w taki sposób zostanie oznaczone. –
Najlepsze rozwiązanie, jakie tu widziałem. Korzysta z istniejącego interfejsu api rejestratora i drukuje wszystko ładnie. –