Logging middleware
The following example logs the time taken for await next(params)
to run:
const prisma = new PrismaClient()prisma.$use(async (params, next) => {const before = Date.now()const result = await next(params)const after = Date.now()console.log(`Query ${params.model}.${params.action} took ${after - before}ms`)return result})const create = await prisma.post.create({data: {title: 'Welcome to Prisma Day 2020',},})const createAgain = await prisma.post.create({data: {title: 'All about database collation',},})
Example output:
Query Post.create took 92msQuery Post.create took 15ms
The example is based on the following sample schema:
generator client {provider = "prisma-client-js"}datasource db {provider = "mysql"url = env("DATABASE_URL")}model Post {authorId Int?content String?id Int @default(autoincrement()) @idpublished Boolean @default(false)title Stringuser User? @relation(fields: [authorId], references: [id])language String?@@index([authorId], name: "authorId")}model User {email String @uniqueid Int @default(autoincrement()) @idname String?posts Post[]extendedProfile Json?role Role @default(USER)}enum Role {ADMINUSERMODERATOR}