Logger.ts 966 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. enum LogLevel {
  2. INFO = 'INFO',
  3. ERROR = 'ERROR',
  4. WARN = 'WARN',
  5. }
  6. const Colors = {
  7. reset: '\x1b[0m',
  8. green: '\x1b[32m',
  9. red: '\x1b[31m',
  10. yellow: '\x1b[33m',
  11. cyan: '\x1b[36m'
  12. };
  13. class Logger {
  14. private getTime(): string {
  15. return new Date().toISOString();
  16. }
  17. private log(level: LogLevel, message: string): void {
  18. const time = this.getTime();
  19. let levelColor = '';
  20. switch(level) {
  21. case LogLevel.INFO:
  22. levelColor = Colors.green;
  23. break;
  24. case LogLevel.ERROR:
  25. levelColor = Colors.red;
  26. break;
  27. case LogLevel.WARN:
  28. levelColor = Colors.yellow;
  29. break;
  30. }
  31. console.log(`[${time}] ` + `${levelColor}${level}${Colors.reset} ` + `${Colors.cyan}${message}${Colors.reset}`);
  32. }
  33. public info(message: string): void {
  34. this.log(LogLevel.INFO, message);
  35. }
  36. public error(message: string): void {
  37. this.log(LogLevel.ERROR, message);
  38. }
  39. public warn(message: string): void {
  40. this.log(LogLevel.WARN, message);
  41. }
  42. }
  43. export { Logger };