백엔드 쪽에서, morgan을 winston으로 교체하는 과정에서 object가 console.log 와는 다른 형태로 출력되는 것을 확인.
여러 웹 사이트를 뒤지다 보니, JSON.stringify() 를 사용하면 된다고도 하고, util.format을 사용하면 된다고도 합니다.
둘 모두 적용해 보니, 어떤 것을 사용하던 관계는 없는 것 같은데, 일단 사용 예는 아래의 GIST 코드를 붙여서 올립니다.
다만, object 내의 object는 recursive 하게 변경해주지 않는 것 같은데... 이 부분까진 그닥 필요가 없어서.... -_-;
아래의 샘플로그 처럼, 하나의 object를 출력 할 때, 해당 object 문자열의 앞에 매번 포멧팅된 문자열이 나오는 것이 싫으시다면(로그 용량 같은 문제?), 아래와 같이 printf 함수 내용을 수정하시면 됩니다.
// Before
printf(({ level, message, timestamp }) => {
level = level.toUpperCase()
return util.format('%o', message).trim().split('\n').map((line) => {
return `${timestamp} [${level}]: ${line}`
}).join('\n')
})
// After
printf(({ level, message, timestamp }) => {
level = level.toUpperCase()
return `${timestamp} [${level}]: ${util.format('%o', message)}`
})
Winston format 에서 object 출력을 위한 코드와 샘플로그 예