主要コンテンツにスキップ

ロギング

PrismaClientlogパラメータを使用して、警告、エラー、データベースに送信されたクエリに関する情報を含むログレベルを設定できます。

Prisma Clientは2種類のロギングをサポートしています

情報

DEBUG 環境変数を使用して、Prisma Clientでデバッグ出力を有効にすることもできます。詳細はデバッグを参照してください。

情報

個々の操作レベルでのPrisma Clientのパフォーマンスについて詳細な洞察を得たい場合は、トレースを参照してください。

標準出力へのログ出力

すべてのログレベルを標準出力に表示する最も簡単な方法は、`LogLevel` オブジェクトの配列を渡すことです。

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

これは、emit の値が常に stdout であるLogDefinition オブジェクトの配列を渡すことの短縮形です。

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

イベントベースのロギング

イベントベースのロギングを使用するには

  1. query のような特定のログレベルに対して emitevent に設定します。
  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) の型と利用可能なプロパティは、ログレベルによって異なります。

© . All rights reserved.