diff --git a/packages/vite/src/node/config.ts b/packages/vite/src/node/config.ts index 88653f135eaad8..464e18f18d35d3 100644 --- a/packages/vite/src/node/config.ts +++ b/packages/vite/src/node/config.ts @@ -156,6 +156,10 @@ export interface UserConfig { * Default: 'info' */ logLevel?: LogLevel + /** + * Custom logger. + */ + customLogger?: Logger /** * Default: true */ @@ -270,7 +274,8 @@ export async function resolveConfig( // Define logger const logger = createLogger(config.logLevel, { - allowClearScreen: config.clearScreen + allowClearScreen: config.clearScreen, + customLogger: config.customLogger }) // user config may provide an alternative mode. But --mode has a higher prority diff --git a/packages/vite/src/node/logger.ts b/packages/vite/src/node/logger.ts index e12c5b02146da8..417b8f164986ae 100644 --- a/packages/vite/src/node/logger.ts +++ b/packages/vite/src/node/logger.ts @@ -43,14 +43,18 @@ function clearScreen() { export interface LoggerOptions { prefix?: string allowClearScreen?: boolean + customLogger?: Logger } export function createLogger( level: LogLevel = 'info', options: LoggerOptions = {} ): Logger { - const { prefix = '[vite]', allowClearScreen = true } = options + if (options.customLogger) { + return options.customLogger + } + const { prefix = '[vite]', allowClearScreen = true } = options const thresh = LogLevels[level] const clear = allowClearScreen && process.stdout.isTTY && !process.env.CI