Skip to Content

ロガーインスタンス

ロガーインスタンスはnew PinoLogger()によって作成され、様々な重要度レベルでイベントを記録するためのメソッドを提供します。ロガーの種類に応じて、メッセージはコンソール、ファイル、または外部サービスに書き込まれる場合があります。

// Using a console logger const logger = new PinoLogger({ name: "Mastra", level: "info" }); logger.debug("Debug message"); // Won't be logged because level is INFO logger.info({ message: "User action occurred", destinationPath: "user-actions", type: "AGENT", }); // Logged logger.error("An error occurred"); // Logged as ERROR

メソッド

debug:

(message: BaseLogMessage | string, ...args: any[]) => void | Promise<void>
DEBUGレベルのログを書き込みます。level ≤ DEBUGの場合のみ記録されます。

info:

(message: BaseLogMessage | string, ...args: any[]) => void | Promise<void>
INFOレベルのログを書き込みます。level ≤ INFOの場合のみ記録されます。

warn:

(message: BaseLogMessage | string, ...args: any[]) => void | Promise<void>
WARNレベルのログを書き込みます。level ≤ WARNの場合のみ記録されます。

error:

(message: BaseLogMessage | string, ...args: any[]) => void | Promise<void>
ERRORレベルのログを書き込みます。level ≤ ERRORの場合のみ記録されます。

cleanup?:

() => Promise<void>
ロガーが保持するリソース(例:Upstashのネットワーク接続)をクリーンアップします。すべてのロガーがこれを実装しているわけではありません。

注意: 一部のロガーはBaseLogMessageオブジェクト(messagedestinationPathtypeフィールドを含む)を必要とします。例えば、FileおよびUpstashロガーは構造化されたメッセージを必要とします。

File Transport (構造化ログ)

import { FileTransport } from "@mastra/loggers/file"; const fileLogger = new PinoLogger({ name: "Mastra", transports: { file: new FileTransport({ path: "test-dir/test.log" }) }, level: "warn", }); fileLogger.warn("Low disk space", { destinationPath: "system", type: "WORKFLOW", });

Upstash Logger (リモートログドレイン)

import { UpstashTransport } from "@mastra/loggers/upstash"; const logger = new PinoLogger({ name: "Mastra", transports: { upstash: new UpstashTransport({ listName: "production-logs", upstashUrl: process.env.UPSTASH_URL!, upstashToken: process.env.UPSTASH_TOKEN!, }), }, level: "info", }); logger.info({ message: "User signed in", destinationPath: "auth", type: "AGENT", runId: "run_123", });

カスタムトランスポート

createCustomTransportユーティリティを使用してカスタムトランスポートを作成し、任意のログサービスやストリームと統合できます。

例: Sentry統合

import { createCustomTransport } from "@mastra/core/loggers"; import pinoSentry from 'pino-sentry-transport'; const sentryStream = await pinoSentry({ sentry: { dsn: 'YOUR_SENTRY_DSN', _experiments: { enableLogs: true, }, }, }); const customTransport = createCustomTransport(sentryStream); const logger = new PinoLogger({ name: "Mastra", transports: { sentry: customTransport }, level: "info", });