Files
payload-automation/src/plugin/logger.ts
2025-08-29 18:11:36 +02:00

57 lines
1.6 KiB
TypeScript

import type { Payload } from 'payload'
// Global logger instance - use Payload's logger type
let pluginLogger: Payload['logger'] | null = null
/**
* Simple config-time logger for use during plugin configuration
* Uses console with plugin prefix since Payload logger isn't available yet
*/
const configLogger = {
debug: (message: string, ...args: any[]) => {
if (process.env.NODE_ENV === 'development') {
console.log(`[payload-automation] ${message}`, ...args)
}
},
error: (message: string, ...args: any[]) => {
console.error(`[payload-automation] ${message}`, ...args)
},
info: (message: string, ...args: any[]) => {
console.log(`[payload-automation] ${message}`, ...args)
},
warn: (message: string, ...args: any[]) => {
console.warn(`[payload-automation] ${message}`, ...args)
}
}
/**
* Get a logger for config-time use (before Payload initialization)
*/
export function getConfigLogger() {
return configLogger
}
/**
* Initialize the plugin logger using Payload's Pino instance
* This creates a child logger with plugin identification
*/
export function initializeLogger(payload: Payload): Payload['logger'] {
// Create a child logger with plugin identification
pluginLogger = payload.logger.child({
plugin: '@xtr-dev/payload-automation'
})
return pluginLogger
}
/**
* Get the plugin logger instance
* Throws error if not initialized
*/
export function getLogger(): Payload['logger'] {
if (!pluginLogger) {
throw new Error('@xtr-dev/payload-automation: Logger not initialized. Make sure the plugin is properly configured.')
}
return pluginLogger
}