メインコンテンツにスキップ

ロギング

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

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

情報

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

情報

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

stdoutへのログ

すべてのログレベルをstdoutに出力する最も簡単な方法は、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. クエリなど、特定のログレベルに対して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)タイプと利用可能なプロパティは、ログレベルによって異なります。