logger.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. const colors = {
  2. reset: "\x1b[0m",
  3. bright: "\x1b[1m",
  4. dim: "\x1b[2m",
  5. green: "\x1b[32m",
  6. yellow: "\x1b[33m",
  7. red: "\x1b[31m",
  8. blue: "\x1b[34m",
  9. };
  10. export class MCPClientLogger {
  11. private readonly prefix: string;
  12. private readonly debugMode: boolean;
  13. constructor(
  14. prefix: string = "NextChat MCP Client",
  15. debugMode: boolean = false,
  16. ) {
  17. this.prefix = prefix;
  18. this.debugMode = debugMode;
  19. }
  20. info(message: any) {
  21. this.log(colors.blue, message);
  22. }
  23. success(message: any) {
  24. this.log(colors.green, message);
  25. }
  26. error(message: any) {
  27. const formattedMessage = this.formatMessage(message);
  28. console.error(
  29. `${colors.red}${colors.bright}[${this.prefix}]${colors.reset} ${formattedMessage}`,
  30. );
  31. }
  32. warn(message: any) {
  33. this.log(colors.yellow, message);
  34. }
  35. debug(message: any) {
  36. if (this.debugMode) {
  37. this.log(colors.dim, message);
  38. }
  39. }
  40. private formatMessage(message: any): string {
  41. return typeof message === "object"
  42. ? JSON.stringify(message, null, 2)
  43. : message;
  44. }
  45. private log(color: string, message: any) {
  46. const formattedMessage = this.formatMessage(message);
  47. console.log(
  48. `${color}${colors.bright}[${this.prefix}]${colors.reset} ${formattedMessage}`,
  49. );
  50. }
  51. }