UNPKG

kysely

Version:
55 lines (54 loc) 1.6 kB
/// <reference types="./log.d.ts" /> import { freeze, isFunction } from './object-utils.js'; export const LOG_LEVELS = freeze(['query', 'error']); export class Log { #levels; #logger; constructor(config) { if (isFunction(config)) { this.#logger = config; this.#levels = freeze({ query: true, error: true, }); } else { this.#logger = defaultLogger; this.#levels = freeze({ query: config.includes('query'), error: config.includes('error'), }); } } isLevelEnabled(level) { return this.#levels[level]; } async query(getEvent) { if (this.#levels.query) { await this.#logger(getEvent()); } } async error(getEvent) { if (this.#levels.error) { await this.#logger(getEvent()); } } } function defaultLogger(event) { if (event.level === 'query') { console.log(`kysely:query: ${event.query.sql}`); console.log(`kysely:query: duration: ${event.queryDurationMillis.toFixed(1)}ms`); } else if (event.level === 'error') { if (event.error instanceof Error) { console.error(`kysely:error: ${event.error.stack ?? event.error.message}`); } else { console.error(`kysely:error: ${JSON.stringify({ error: event.error, query: event.query.sql, queryDurationMillis: event.queryDurationMillis, })}`); } } }