Browse Source

feat: add Logger

xingyu 2 years ago
parent
commit
ba40db4ba6
2 changed files with 105 additions and 2 deletions
  1. 5 2
      yudao-ui-admin-vue3/src/main.ts
  2. 100 0
      yudao-ui-admin-vue3/src/utils/Logger.ts

+ 5 - 2
yudao-ui-admin-vue3/src/main.ts

@@ -39,8 +39,9 @@ import './permission'
 
 import { isDevMode } from '@/utils/env'
 
-if (isDevMode()) {
-  console.info(isDevMode())
+import Logger from '@/utils/logger'
+
+if (isDevMode() == true) {
   import('element-plus/dist/index.css')
 }
 
@@ -68,3 +69,5 @@ const setupAll = async () => {
 }
 
 setupAll()
+
+Logger.prettyPrimary(`欢迎使用`, import.meta.env.VITE_APP_TITLE)

+ 100 - 0
yudao-ui-admin-vue3/src/utils/Logger.ts

@@ -0,0 +1,100 @@
+const isArray = function (obj: any): boolean {
+  return Object.prototype.toString.call(obj) === '[object Array]'
+}
+
+const Logger = () => {}
+
+Logger.typeColor = function (type: string) {
+  let color = ''
+  switch (type) {
+    case 'primary':
+      color = '#2d8cf0'
+      break
+    case 'success':
+      color = '#19be6b'
+      break
+    case 'info':
+      color = '#909399'
+      break
+    case 'warn':
+      color = '#ff9900'
+      break
+    case 'error':
+      color = '#f03f14'
+      break
+    default:
+      color = '#35495E'
+      break
+  }
+  return color
+}
+
+Logger.print = function (type = 'default', text: any, back = false) {
+  if (typeof text === 'object') {
+    // 如果是對象則調用打印對象方式
+    isArray(text) ? console.table(text) : console.dir(text)
+    return
+  }
+  if (back) {
+    // 如果是打印帶背景圖的
+    console.log(
+      `%c ${text} `,
+      `background:${Logger.typeColor(type)}; padding: 2px; border-radius: 4px; color: #fff;`
+    )
+  } else {
+    console.log(
+      `%c ${text} `,
+      `border: 1px solid ${Logger.typeColor(type)};
+        padding: 2px; border-radius: 4px;
+        color: ${Logger.typeColor(type)};`
+    )
+  }
+}
+
+Logger.printBack = function (type = 'primary', text) {
+  this.print(type, text, true)
+}
+
+Logger.pretty = function (type = 'primary', title, text) {
+  if (typeof text === 'object') {
+    console.group('Console Group', title)
+    console.log(
+      `%c ${title}`,
+      `background:${Logger.typeColor(type)};border:1px solid ${Logger.typeColor(type)};
+        padding: 1px; border-radius: 4px; color: #fff;`
+    )
+    isArray(text) ? console.table(text) : console.dir(text)
+    console.groupEnd()
+    return
+  }
+  console.log(
+    `%c ${title} %c ${text} %c`,
+    `background:${Logger.typeColor(type)};border:1px solid ${Logger.typeColor(type)};
+      padding: 1px; border-radius: 4px 0 0 4px; color: #fff;`,
+    `border:1px solid ${Logger.typeColor(type)};
+      padding: 1px; border-radius: 0 4px 4px 0; color: ${Logger.typeColor(type)};`,
+    'background:transparent'
+  )
+}
+
+Logger.prettyPrimary = function (title, ...text) {
+  text.forEach((t) => this.pretty('primary', title, t))
+}
+
+Logger.prettySuccess = function (title, ...text) {
+  text.forEach((t) => this.pretty('success', title, t))
+}
+
+Logger.prettyWarn = function (title, ...text) {
+  text.forEach((t) => this.pretty('warn', title, t))
+}
+
+Logger.prettyError = function (title, ...text) {
+  text.forEach((t) => this.pretty('error', title, t))
+}
+
+Logger.prettyInfo = function (title, ...text) {
+  text.forEach((t) => this.pretty('info', title, t))
+}
+
+export default Logger