logging.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. const formatMap = {
  2. labels: {
  3. main: {
  4. start: "\x1b[1m\x1b[32m",
  5. end: "\x1b[0m",
  6. },
  7. },
  8. logTypes: {
  9. error: {
  10. start: "\x1b[31m",
  11. end: "\x1b[0m",
  12. },
  13. warn: {
  14. start: "\x1b[33m",
  15. end: "\x1b[0m",
  16. },
  17. info: {
  18. start: "\x1b[32m",
  19. end: "\x1b[0m",
  20. },
  21. debug: {
  22. start: "\x1b[34m",
  23. end: "\x1b[0m",
  24. },
  25. },
  26. }
  27. function messageStart(label, logType) {
  28. const labelFormatting = formatMap.labels?.[label]?.start || `[${label}] `
  29. const logTypeFormatting = `${formatMap.logTypes?.[logType]?.start || ""}[${logType}] `
  30. return `${logTypeFormatting}${labelFormatting}`
  31. }
  32. function messageEnd(label, logType) {
  33. const labelFormatting = formatMap.labels?.[label]?.end || ""
  34. const logTypeFormatting = formatMap.logTypes?.[logType]?.end || ""
  35. return `${logTypeFormatting}${labelFormatting}`
  36. }
  37. function logMessage(logType, label) {
  38. const log = console[logType]
  39. const startStr = messageStart(label, logType)
  40. const endStr = messageEnd(label, logType)
  41. return (message) => {
  42. log(`${startStr}${message}${endStr}`)
  43. }
  44. }
  45. function noop() {
  46. }
  47. export function getLogger(logLevel = "info", name) {
  48. const label = name || "genid"
  49. switch(logLevel) {
  50. case 6:
  51. case "trace":
  52. return {
  53. group: console.group,
  54. groupEnd: console.groupEnd,
  55. trace: console.trace,
  56. debug: logMessage("debug", label),
  57. info: logMessage("info", label),
  58. warn: logMessage("warn", label),
  59. error: logMessage("error", label),
  60. }
  61. case "debug":
  62. return {
  63. group: console.group,
  64. groupEnd: console.groupEnd,
  65. trace: noop,
  66. debug: logMessage("debug", label),
  67. info: logMessage("info", label),
  68. warn: logMessage("warn", label),
  69. error: logMessage("error", label),
  70. }
  71. case 4:
  72. case "info":
  73. return {
  74. group: console.group,
  75. groupEnd: console.groupEnd,
  76. trace: noop,
  77. debug: noop,
  78. info: logMessage("info", label),
  79. warn: logMessage("warn", label),
  80. error: logMessage("error", label),
  81. }
  82. case 3:
  83. case "warn":
  84. return {
  85. group: console.group,
  86. groupEnd: console.groupEnd,
  87. trace: noop,
  88. debug: noop,
  89. info: noop,
  90. warn: logMessage("warn", label),
  91. error: logMessage("error", label),
  92. }
  93. case 2:
  94. case "error":
  95. return {
  96. group: console.group,
  97. groupEnd: console.groupEnd,
  98. trace: noop,
  99. debug: noop,
  100. info: noop,
  101. warn: noop,
  102. error: logMessage("error", label),
  103. }
  104. case 1:
  105. case "silent":
  106. return {
  107. group: noop,
  108. groupEnd: noop,
  109. trace: noop,
  110. debug: noop,
  111. info: noop,
  112. warn: noop,
  113. error: noop,
  114. }
  115. }
  116. }