Logging with multiple log levels and adapter pattern for console, consola, and pino integration.
Features
- Multiple log levels (trace, debug, info, warn, error, fatal)
- Adapter pattern for console/consola/pino integration
- Enable/disable logging
- Level-based filtering
- Prefix support
Installation
import { createLoggerPlugin } from '@vuetify/v0'
const app = createApp(App)
app.use(createLoggerPlugin({
level: 'info',
prefix: '[MyApp]',
}))
Basic Usage
<script setup lang="ts">
import { useLogger } from '@vuetify/v0'
const logger = useLogger()
logger.info('Application started')
logger.debug('Debug information', { data: 'value' })
logger.error('An error occurred', error)
</script>
API Reference
createLoggerPlugin()
Creates a logger plugin.
Plugin configurationMinimum log level to output:
'trace': All messages
'debug': Debug and above
'info': Info and above (default)
'warn': Warnings and above
'error': Errors only
'fatal': Fatal errors only
'silent': No output
Prefix for all log messages
Enable or disable logging
Logger adapter (defaults to Vuetify0LoggerAdapter)
namespace
string
default:"'v0:logger'"
The namespace for the logger context
LoggerContext
debug
(message: string, ...args: unknown[]) => void
Log debug message (level: 1)
info
(message: string, ...args: unknown[]) => void
Log info message (level: 2)
warn
(message: string, ...args: unknown[]) => void
Log warning message (level: 3)
error
(message: string, ...args: unknown[]) => void
Log error message (level: 4)
trace
(message: string, ...args: unknown[]) => void
Log trace message (level: 0)
fatal
(message: string, ...args: unknown[]) => void
Log fatal error message (level: 5)
level
(level: LogLevel) => void
Change the current log levelExample:
Get the current log levelExample:const level = logger.current() // 'info'
Check if logging is enabled
Log Levels
Log levels in order from lowest to highest:
- trace (0): Very detailed debugging information
- debug (1): Debugging information
- info (2): Informational messages
- warn (3): Warning messages
- error (4): Error messages
- fatal (5): Fatal error messages
- silent (6): No output
const logger = useLogger()
// Set level to 'warn' - only warn, error, and fatal will be logged
logger.level('warn')
logger.trace('Not logged')
logger.debug('Not logged')
logger.info('Not logged')
logger.warn('Logged') // ✓
logger.error('Logged') // ✓
logger.fatal('Logged') // ✓
Examples
Basic Logging
import { useLogger } from '@vuetify/v0'
const logger = useLogger()
logger.info('User logged in', { userId: 123 })
logger.error('Failed to load data', error)
logger.debug('Request payload', payload)
Dynamic Level Control
<script setup lang="ts">
import { useLogger } from '@vuetify/v0'
import { ref } from 'vue'
const logger = useLogger()
const currentLevel = ref(logger.current())
const changeLevel = (level: LogLevel) => {
logger.level(level)
currentLevel.value = level
}
</script>
<template>
<div>
<p>Current level: {{ currentLevel }}</p>
<button @click="changeLevel('debug')">Debug</button>
<button @click="changeLevel('info')">Info</button>
<button @click="changeLevel('warn')">Warn</button>
</div>
</template>
Enable/Disable Logging
const logger = useLogger()
// Disable logging
logger.disable()
logger.info('This will not be logged')
// Enable logging
logger.enable()
logger.info('This will be logged')
// Check if enabled
if (logger.enabled()) {
logger.debug('Logging is enabled')
}
Adapters
Console Adapter (Default)
import { createLoggerPlugin, Vuetify0LoggerAdapter } from '@vuetify/v0'
app.use(createLoggerPlugin({
adapter: new Vuetify0LoggerAdapter({ prefix: '[App]' }),
}))
Consola Adapter
import { ConsolaLoggerAdapter } from '@vuetify/v0'
import { createConsola } from 'consola'
const consola = createConsola({
level: 3,
})
app.use(createLoggerPlugin({
adapter: new ConsolaLoggerAdapter(consola),
}))
Pino Adapter
import { PinoLoggerAdapter } from '@vuetify/v0'
import pino from 'pino'
const logger = pino({
level: 'info',
})
app.use(createLoggerPlugin({
adapter: new PinoLoggerAdapter(logger),
}))
Custom Adapter
import type { LoggerAdapter } from '@vuetify/v0'
class MyLoggerAdapter implements LoggerAdapter {
debug(message: string, ...args: unknown[]) {
myService.log('debug', message, ...args)
}
info(message: string, ...args: unknown[]) {
myService.log('info', message, ...args)
}
warn(message: string, ...args: unknown[]) {
myService.log('warn', message, ...args)
}
error(message: string, ...args: unknown[]) {
myService.log('error', message, ...args)
}
trace(message: string, ...args: unknown[]) {
myService.log('trace', message, ...args)
}
fatal(message: string, ...args: unknown[]) {
myService.log('fatal', message, ...args)
}
}
app.use(createLoggerPlugin({
adapter: new MyLoggerAdapter(),
}))
Development Mode
In development mode, the logger is exposed on window for debugging:
// In browser console (dev mode only)
window.__v0Logger__.level('trace')
window.__v0Logger__.info('Test message')