Skip to main content
Vuetify0 is now in alpha!
Vuetify0 Logo
Theme
Mode
Palettes
Accessibility
Vuetify One
Sign in to Vuetify One

Access premium tools across the Vuetify ecosystem — Bin, Play, Studio, and more.

Not a subscriber? See what's included

useLogger


IntermediateApr 7, 2026

Application logging with configurable levels, filtering, and swappable adapters for popular logging libraries.

Installation

Install the Logger plugin in your app’s entry point:

main.ts
import { createApp } from 'vue'
import { createLoggerPlugin } from '@vuetify/v0'
import App from './App.vue'

const app = createApp(App)

app.use(
  createLoggerPlugin({
    level: 'debug',
    prefix: '[MyApp]',
  })
)

app.mount('#app')

Usage

Once the plugin is installed, use the useLogger composable in any component:

vue
<script setup lang="ts">
  import { useLogger } from '@vuetify/v0'

  const logger = useLogger()

  logger.info('Component mounted')
  logger.debug('Debug information', { userId: 123 })
  logger.warn('Warning message')
  logger.error('Error occurred', new Error('Something went wrong'))
</script>

<template>
  <div>
    <h1>Check the console for logs</h1>
  </div>
</template>

Adapters

Adapters let you swap the underlying logging implementation without changing your application code.

AdapterImportDescription
Vuetify0LoggerAdapter@vuetify/v0Console-based logging (default)
PinoLoggerAdapter@vuetify/v0/logger/adapters/pinoPino↗ integration
ConsolaLoggerAdapter@vuetify/v0/logger/adapters/consolaConsola↗ integration

The default Vuetify0LoggerAdapter maps each level to the correct native console method — debugconsole.debug, infoconsole.info, warnconsole.warn, error/fatalconsole.error. This ensures browser DevTools can correctly filter by level.

Pino

Pino↗ is a high-performance JSON logger. Requires the pino package.

bash
pnpm add pino
src/plugins/zero.ts
import pino from 'pino'
import { PinoLoggerAdapter } from '@vuetify/v0/logger/adapters/pino'
import { createLoggerPlugin } from '@vuetify/v0'

const logger = pino({ level: 'debug' })

app.use(
  createLoggerPlugin({
    adapter: new PinoLoggerAdapter(logger),
  })
)

Consola

Consola↗ is an elegant console logger by UnJS. Requires the consola package.

bash
pnpm add consola
src/plugins/zero.ts
import { createConsola } from 'consola'
import { ConsolaLoggerAdapter } from '@vuetify/v0/logger/adapters/consola'
import { createLoggerPlugin } from '@vuetify/v0'

const consola = createConsola({ level: 4 })

app.use(
  createLoggerPlugin({
    adapter: new ConsolaLoggerAdapter(consola),
  })
)

Custom Adapters

Implement LoggerAdapter to route logs to any destination:

ts
import type { LoggerAdapter } from '@vuetify/v0'

class DatadogLoggerAdapter implements LoggerAdapter {
  debug (message: string, ...args: unknown[]) {
    datadogLogs.logger.debug(message, ...args)
  }
  info (message: string, ...args: unknown[]) {
    datadogLogs.logger.info(message, ...args)
  }
  warn (message: string, ...args: unknown[]) {
    datadogLogs.logger.warn(message, ...args)
  }
  error (message: string, ...args: unknown[]) {
    datadogLogs.logger.error(message, ...args)
  }
}

app.use(createLoggerPlugin({ adapter: new DatadogLoggerAdapter() }))
ts
interface LoggerAdapter {
  debug: (message: string, ...args: unknown[]) => void
  info:  (message: string, ...args: unknown[]) => void
  warn:  (message: string, ...args: unknown[]) => void
  error: (message: string, ...args: unknown[]) => void
  trace?: (message: string, ...args: unknown[]) => void  // optional
  fatal?: (message: string, ...args: unknown[]) => void  // optional
}

trace and fatal are optional — if omitted, those calls are silently dropped.

Architecture

useLogger uses the plugin pattern with a log adapter:

Logger Plugin

Use controls to zoom and pan. Click outside or press Escape to close.

Logger Plugin

Reactivity

The logger exposes only functions — no reactive properties. All interactions are imperative.

MethodNotes
debug(msg, ...args)Log at debug level
info(msg, ...args)Log at info level
warn(msg, ...args)Log at warn level
error(msg, ...args)Log at error level
trace(msg, ...args)Log at trace level
fatal(msg, ...args)Log at fatal level
level(newLevel)Change the active log level at runtime
current()Return the current LogLevel string
enabled()Return true if logging is enabled
enable()Enable logging
disable()Disable logging (silences all output)

Examples

Log Console

Interactive logger level control with live console output, demonstrating debug(), info(), warn(), and error() across all log levels.

Console output
Click a log level button above

API Reference

The following API details are for the useLogger composable.

Functions

createLogger

(options?: LoggerOptions) => LoggerContext

Creates a new logger instance.

createLoggerContext

<_E>(_options?: LoggerContextOptions | undefined) => ContextTrinity<_E>

createLoggerPlugin

(_options?: LoggerContextOptions | undefined) => Plugin

useLogger

<_E>(namespace?: string) => _E

Options

adapter

LoggerAdapter | undefined

level

LogLevel | undefined

prefix

string | undefined

enabled

boolean | undefined

Methods

debug

(message: string, ...args: unknown[]) => void

info

(message: string, ...args: unknown[]) => void

warn

(message: string, ...args: unknown[]) => void

error

(message: string, ...args: unknown[]) => void

trace

(message: string, ...args: unknown[]) => void

fatal

(message: string, ...args: unknown[]) => void

level

(level: LogLevel) => void

current

() => LogLevel

enabled

() => boolean

enable

() => void

disable

() => void
Was this page helpful?

© 2016-1970 Vuetify, LLC
Ctrl+/