ロガーインスタンス
ロガーインスタンスは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
オブジェクト(message
、destinationPath
、type
フィールドを含む)を必要とします。例えば、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",
});