import log from 'loglevel'
import prefix from 'loglevel-plugin-prefix'

const logger = () => {
  // trace/debug/info/warn/error 단계로 진행되며 silent일 경우 모든 로그가 표현되지 않는다.
  log.setLevel(import.meta.env.VITE_APP_DEBUG_LEVEL)

  prefix.reg(log)
  prefix.apply(log, {
    timestampFormatter(date) {
      // 시:분:처:밀리세컨드 
      return date.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/, '$1') + ':' + date.getMilliseconds()
    },
    format(level, name, timestamp) {
      return `${(`[${timestamp}]`)}[${(level)}]`
    },
  })
} 

export default defineNuxtPlugin(() => {
  logger()
  return {
    provide: {
      log
    }
  }
})