跳到主要內容

日誌

使用 PrismaClientlog 引數來配置 日誌級別,包括警告、錯誤以及傳送到資料庫的查詢資訊。

Prisma Client 支援兩種型別的日誌記錄

資訊

你也可以使用 DEBUG 環境變數來在 Prisma Client 中啟用除錯輸出。更多資訊請參閱除錯

資訊

如果你想深入瞭解 Prisma Client 在單個操作層面的效能,請參閱跟蹤

日誌輸出到 stdout

將所有日誌級別列印到 stdout 最簡單的方法是傳入一個 LogLevel 物件陣列

const prisma = new PrismaClient({
log: ['query', 'info', 'warn', 'error'],
})

這是傳入 LogDefinition 物件陣列的簡寫形式,其中 emit 的值始終是 stdout

const prisma = new PrismaClient({
log: [
{
emit: 'stdout',
level: 'query',
},
{
emit: 'stdout',
level: 'error',
},
{
emit: 'stdout',
level: 'info',
},
{
emit: 'stdout',
level: 'warn',
},
],
})

基於事件的日誌記錄

要使用基於事件的日誌記錄

  1. 將特定日誌級別(例如 `query`)的 emit 設定為 event
  2. 使用 $on() 方法訂閱事件

以下示例訂閱所有 query 事件並將 durationquery 寫入控制檯

const prisma = new PrismaClient({
log: [
{
emit: 'event',
level: 'query',
},
{
emit: 'stdout',
level: 'error',
},
{
emit: 'stdout',
level: 'info',
},
{
emit: 'stdout',
level: 'warn',
},
],
})

prisma.$on('query', (e) => {
console.log('Query: ' + e.query)
console.log('Params: ' + e.params)
console.log('Duration: ' + e.duration + 'ms')
})
顯示CLI結果
Query: SELECT "public"."User"."id", "public"."User"."email", "public"."User"."name" FROM "public"."User" WHERE 1=1 OFFSET $1
Params: [0]
Duration: 3ms
Query: SELECT "public"."Post"."id", "public"."Post"."title", "public"."Post"."authorId" FROM "public"."Post" WHERE "public"."Post"."authorId" IN ($1,$2,$3,$4) OFFSET $5
Params: [2, 7, 18, 29]
Duration: 2ms

確切的事件(e)型別和可用屬性取決於日誌級別。

© . This site is unofficial and not affiliated with Prisma Data, Inc.