All files / src/libs/logger plugin.ts

14.81% Statements 4/27
100% Branches 0/0
0% Functions 0/1
14.81% Lines 4/27

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  1x   1x 1x                                                             1x  
import type {App} from 'vue'
import {useSchemaLogger} from './logger'
 
export default {
  install(app: App) {
    // $log で message,payload の順に使える
    app.config.globalProperties.$log = useSchemaLogger()
 
    // Vueエラー
    app.config.errorHandler = (err, instance, info) => {
      // 可能な範囲でコンポーネント名を抽出(Vue3)
      const compName =
        (instance?.$options as any)?.name ??
        (instance?.$options as any)?.__name ??
        (instance as any)?.$?.type?.name ??
        'anonymous'
 
      useSchemaLogger({ logger: 'VueError', component: compName }).error(
        'Unhandled Vue error',
        {
          err:
            err instanceof Error
              ? { name: err.name, message: err.message, stack: err.stack }
              : String(err),
          info,
        }
      )
    }
 
    // 未処理Promise
    window.addEventListener('unhandledrejection', (e) => {
      useSchemaLogger({ logger: 'Promise' })
        .error('unhandledrejection', { reason: String(e.reason) })
    })
  },
}