프로그래밍/개발메모

2025-05-18 (일) 개발일지 / 로그 찍다 서버 쥬금

SIDNFT 2025. 5. 18. 12:23
반응형

 

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);
};

시간 낭비로 일요일을 시작했습니다.

 

 

 

 

 

 

반응형