All files LSLogger.ts

92% Statements 23/25
71.42% Branches 5/7
100% Functions 6/6
91.66% Lines 22/24

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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 40 41 422x 5x 7x 4x 1x 1x     2x   13x 13x 13x 13x           13x   13x   7x 7x   4x 4x   1x 1x   1x 1x             2x  
import { LogLevel, Logger } from './types';
const LSLogger = (logLevel: LogLevel = LogLevel.INFO): Logger => ({
  debug: (message) => log(LogLevel.DEBUG, message, logLevel),
  info: (message) => log(LogLevel.INFO, message, logLevel),
  warning: (message) => log(LogLevel.WARNING, message, logLevel),
  error: (message) => log(LogLevel.ERROR, message, logLevel),
});
 
const log = (level: LogLevel, message: any, logLevel: LogLevel): void => {
  // 사용자가 설정한 로그 수준(logLevel)보다 실제 로그 레벨(level)이 높거나 같은 경우에만 로그를 출력합니다.
  if (level >= logLevel) {
    const now = new Date();
    const milliseconds = now.getMilliseconds().toString().padStart(3, '0'); // 밀리세컨드 값
    const timestamp = `${now.toLocaleTimeString('en-US', {
      hour12: false,
      hour: '2-digit',
      minute: '2-digit',
      second: '2-digit',
    })}.${milliseconds}`;
    const prefix = `[${timestamp} LightSwitch ${LogLevel[level]}] :`;
 
    switch (level) {
      case LogLevel.DEBUG:
        console.debug(`${prefix} ${message}`);
        break;
      case LogLevel.INFO:
        console.log(`${prefix} ${message}`);
        break;
      case LogLevel.WARNING:
        console.warn(`${prefix} ${message}`);
        break;
      case LogLevel.ERROR:
        console.error(`${prefix} ${message}`);
        break;
      default:
        console.log(`${prefix} ${message}`);
        break;
    }
  }
};
export { LSLogger };