Post

[Discord Bot] 로거 생성 #3

1. 로거 생성

디스코드 봇을 만들다 보면 오류가 생겨 디버깅을 해야하는 경우가 생기는데, 보통 로그를 찍으며 디버깅하는 경우가 대부분이다. 이때 로그에 시간과, 목적이 나오는 것이 더 편리하므로 로거를 만들 것이다.

우선, 로거는 /src/utils/logger.ts에 생성하고, 기능은 하나로 묶는 것이 더 사용하는데 편리하므로 Typescriptnamespace문법을 활용하여 만들 것이다.

또한 다양한 색상의 로그를 사용하는 것이 더 명확하므로 colors라는 모듈을 설치하여 로그를 꾸밀 것이다.

Windows

1
npm i colors

MacOS

1
sudo npm i colors

colors모듈을 설치하면 아래 코드를 사용하여 로거를 구현한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import "colors";

type Log = string | number | boolean | object;

export namespace Logger {
  const timestamp = () => {
    const format = new Intl.DateTimeFormat("ko", {
      dateStyle: "medium",
      timeStyle: "short",
    }).format;

    const date = new Date();

    return format(date);
  };

  const print = (mode: string, ...logs: Log[]) => {
    process.stdout.write(`[${mode} | ${timestamp()}] `);

    for (const log of logs) {
      if (["string", "number", "boolean"].includes(typeof log))
        process.stdout.write(`${log} `);
      else console.log("\n", log);
    }
    console.log();
  };

  export const info = (...logs: Log[]) => {
    print("INFO".green, ...logs);
  };

  export const warn = (...logs: Log[]) => {
    print("WARN!".bgYellow, ...logs);
  };

  export const error = (...logs: Log[]) => {
    print("ERROR!".bgRed, ...logs);
  };
}
This post is licensed under CC BY 4.0 by the author.