반응형
1. console.info 함수를 덮어 썼는데 죽어버렸다.
express 에서 req.params 를 로그를 찍었는데 프로그램이 예외를 밷으면 처리를 못했습니다.
거의 2시간을 디버깅 해서 찾았는데 황당하군요
console.info 를 winston 의 로그 함수로 교체를 했는데
예가 object 를 인자로 받으면 로그를 찍다 말고 예외를 던져버렸습니다.
시간낭비 갑이군요
로그 함수 내부에 try-catch 걸고.
type LOG_FUNC = (text: string) => void;
function log_write(func: LOG_FUNC, arr: any[]) {
try {
let output = "";
for (let i = 0; i < arr.length; i++) {
if (i != 0) output += " ";
const data = arr[i];
if (typeof data == "object") {
output += JSON.stringify(data);
} else {
output += data;
}
}
func(output);
} catch (err) {
const e = err as Error;
func(`log_write_fail ${e.message} ${e.stack}`);
}
}
console.info = function () {
const arr: any[] = [];
for (let i = 0; i < arguments.length; i++) {
const data = arguments[i];
arr.push(data);
}
log_write(logger.info, arr);
};
시간 낭비로 일요일을 시작했습니다.
반응형