drizzle-logger-typeorm
v1.0.0
Published
Detailed SQL query logger for Drizzle ORM with parameter sanitization, bigint/Date handling, and nested error payload detection
Maintainers
Readme
drizzle-logger-typeorm
Detailed SQL query logger for Drizzle ORM with parameter sanitization, bigint/Date handling, and nested error payload detection.
Installation
npm install drizzle-logger-typeorm
# or
bun add drizzle-logger-typeormUsage
Option 1 — Use the standalone logger
Attach the logger to any Drizzle ORM instance:
import { drizzle } from "drizzle-orm/mysql2";
import mysql from "mysql2/promise";
import { DrizzleDetailedLogger } from "drizzle-logger-typeorm";
import * as schema from "./schema";
const pool = mysql.createPool({ uri: "mysql://user:pass@localhost:3306/mydb" });
const db = drizzle(pool, {
schema,
mode: "default",
logger: new DrizzleDetailedLogger(),
});Option 2 — Use the factory function
import * as schema from "./schema";
import { createDb } from "drizzle-logger-typeorm";
const db = createDb("mysql://user:pass@localhost:3306/mydb", schema);Features
- Date sanitization —
Dateobjects are logged as ISO strings - BigInt support —
bigintvalues are converted to strings - Object serialization — Objects are JSON-stringified for readability
- Nested error detection — When Drizzle embeds a failed query payload inside parameters, it's detected and logged distinctly via
console.errorto reduce noise - Unserializable safety — Objects that throw on
JSON.stringifyare caught and logged as[Unserializable Object]
Logger output example
[Drizzle] Executing query: select `id`, `name` from `users` where `email` = ?
[Drizzle] Parameters: ["[email protected]"]When a nested DrizzleQueryError payload is detected:
[Drizzle] Nested Query Error Payload Detected {
currentQuery: '...',
currentParameters: '[omitted due to nested failed-query payload]',
nestedFailedQuery: '...',
nestedFailedParams: '...'
}
[Drizzle] Executing query: ...
[Drizzle] Parameters: [contains nested DrizzleQueryError payload, omitted to reduce noise]API
DrizzleDetailedLogger
Class implementing Drizzle ORM's BaseLogger interface. Pass it as the logger option when creating a Drizzle instance.
createDb<T>(url: string, schema: T)
Factory function that creates a mysql2 connection pool and returns a Drizzle ORM instance with the detailed logger attached.
| Parameter | Type | Description |
|-----------|------|-------------|
| url | string | MySQL connection string |
| schema | T | Drizzle ORM schema object |
Returns a typed Drizzle ORM database instance.
License
MIT
