2017-02-02 3 views
3

Morgan은 요청을 콘솔에 직접 출력합니다.Nodejs - 디버그와 함께 morgan을 사용하는 방법

npm debug으로 리디렉션하면 기록되는 다른 항목과 동일한 형식이됩니다.

import debug from 'debug'; 

const LOG_PREFIX = 'api'; 

const info = debug(`${LOG_PREFIX}:info`); 
const dev = debug(`${LOG_PREFIX}:dev`); 
const error = debug(`${LOG_PREFIX}:error`); 

export { 
    info, 
    dev, 
    error, 
}; 

그리고 현재와 같은 다른 물건 로그 :

import { info } from './debug'; 

info('App is up and running!'); 

나의 현재 모건 호출은이 :

app.use(morgan('combined')); 
+0

더 나은 표현 - 윈스턴를 사용 할 수 있습니다. 그것은 파일, 콘솔, newtork, db와 같은 다양한 전송에 많은 것을 기록 할 수 있습니다. 모건이 할 수없는 일이 많습니다. 고도의 구성이 가능합니다. 내가 MongoDB에 쉽게 로그인 할 수 없기 때문에 나는 morgon을 교체했다. –

답변

2

모건은을 받아

debug.js 설정은 다음과 같습니다 선택적 매개 변수는 stream입니다.

기본적으로 콘솔은 process.stdout입니다.

stream.write을 호출하는 기능을 수행하면 debug으로 리디렉션되는 빠른 스트림을 쉽게 만들 수 있습니다.

app.use(morgan('combined', { stream: { write: msg => info(msg) } })); 

일반적으로 (하지만 여전히 ES6)는, 그는 다음과 같습니다

ES5

import debug from 'debug'; 
const info = debug('info'); 
app.use(morgan('combined', { stream: { write: msg => info(msg) } })); 
는 :

var info = require('debug')('info'); 
app.use(morgan('combined', { stream: { write: function(msg) { info(msg); } }})); 
+0

MongoDB에 가길 원한다면? –

+0

@NidhinDavid 아주 효율적인 방법으로 이미 여러분에게 그렇게 해주는 라이브러리가 있다고 확신 할 수 있다면, 빠른 해결책은'info (msg)'를'db.collection ('logs')와 같이 변경하는 것입니다. .insertOne ({msg, date})' – zurfyx

+0

MongoDb가 스트림 쓰기를 지원한다고 생각합니까? –