본문으로 건너뛰기

벌채 반출

Mastra의 로깅 시스템은 함수 실행, 입력 데이터 및 출력 응답을 구조화된 형식으로 캡처합니다.

Mastra 플랫폼에 배포하면 대시보드에 로그가 표시됩니다. 자체 호스팅 또는 사용자 지정 환경에서는 구성된 전송에 따라 로그를 파일이나 외부 서비스로 보낼 수 있습니다.

다음을 사용하여 로그 구성PinoLogger
configuring-logs-with-pinologger에 대한 직접 링크

언제initializing a new Mastra project using the CLI, PinoLogger is included by default.

src/mastra/index.ts
import { Mastra } from '@mastra/core/mastra'
import { PinoLogger } from '@mastra/loggers'

export const mastra = new Mastra({
logger: new PinoLogger({
name: 'Mastra',
level: 'info',
}),
})

방문하다PinoLogger for all available configuration options.

관측 가능성 스토리지에 로깅
관측 가능성 스토리지에 로깅에 대한 직접 링크

언제observability 을 사용하여 로컬 서버를 시작하세요. 구성이 완료되면 모든 로거 호출이 Observability 스토리지로 자동 전달됩니다. 즉, 애플리케이션과 Mastra 내부 컴포넌트의 모든 debug, info, warn, error, and trackException 호출이 Trace와 함께 저장됩니다.

코드 변경이 필요하지 않습니다. Mastra는 원래 로거(콘솔, 파일 또는 사용자 정의 전송)와 관찰 시스템 모두에 동시에 쓸 수 있도록 구성된 로거를 래핑합니다.

관측 가능성 로그 수준 구성
관측 가능성 로그 수준 구성에 대한 직접 링크

콘솔 로거와 독립적으로 Observability 저장소에 도달하는 로그 수준을 제어할 수 있습니다. 추가logging option to your observability instance configuration:

src/mastra/index.ts
import { Mastra } from '@mastra/core/mastra'
import { PinoLogger } from '@mastra/loggers'
import { Observability, MastraStorageExporter } from '@mastra/observability'

export const mastra = new Mastra({
logger: new PinoLogger({ name: 'Mastra', level: 'debug' }),
observability: new Observability({
configs: {
default: {
serviceName: 'my-app',
exporters: [new MastraStorageExporter()],
logging: {
enabled: true, // set to false to disable log forwarding
level: 'info', // minimum level: 'debug' | 'info' | 'warn' | 'error' | 'fatal'
},
},
},
}),
})

이 예에서 콘솔 로거는 다음부터 시작하는 모든 레벨을 출력합니다.debug, but only info 이상은 Observability 스토리지에 기록됩니다. 이렇게 하면 개발 중에는 상세한 콘솔 출력을 유지하면서 스토리지를 깔끔하게 관리할 수 있습니다.

옵션유형기본값설명
enabledbooleantrueSet to false 로 설정하면 Observability 스토리지로의 모든 로그 전달이 비활성화됩니다.
levelLogLevel'debug'최소 심각도 수준입니다. 이 수준보다 낮은 로그는 삭제됩니다.

로그 쿼리 중
로그 쿼리 중에 대한 직접 링크

관측 가능성 저장소에 기록된 로그는 Mastra 클라이언트 SDK를 통해 쿼리할 수 있습니다.

import { MastraClient } from '@mastra/client-js'

const client = new MastraClient()

const logs = await client.listLogsVNext({
filters: { level: 'error' },
pagination: { page: 1, perPage: 50 },
orderBy: { field: 'timestamp', direction: 'desc' },
})

DuckDB 또는 ClickHouse와 같은 영구 스토리지 백엔드를 사용하는 경우 로그는 다시 시작해도 유지되며 기록 분석에 사용할 수 있습니다.

로그 맞춤설정
로그 맞춤설정에 대한 직접 링크

Mastra는 다음을 통해 로거 인스턴스에 대한 액세스를 제공합니다.mastra.getLogger() 메서드는 Workflow 단계와 Tool 모두에서 사용할 수 있습니다. 로거는 표준 심각도 수준을 지원합니다: debug, info, warn, and error.

Workflow 단계에서 로깅
Workflow 단계에서 로깅에 대한 직접 링크

Workflow 단계 내에서 다음을 통해 로거에 액세스합니다.mastra parameter inside the execute 함수입니다. 단계 실행과 관련된 메시지를 기록할 수 있습니다.

src/mastra/workflows/test-workflow.ts
import { createWorkflow, createStep } from "@mastra/core/workflows";
import { z } from "zod";

const step1 = createStep({
execute: async ({ mastra }) => {
const logger = mastra.getLogger();
logger.info("workflow info log");

return {
output: ""
};
}
});

export const testWorkflow = createWorkflow({...})
.then(step1)
.commit();

Tool에서 로깅
Tool에서 로깅에 대한 직접 링크

마찬가지로 Tool은 다음을 통해 로거 인스턴스에 액세스할 수 있습니다.mastra 매개변수입니다. 이를 사용하여 실행 중 Tool별 활동을 기록할 수 있습니다.

src/mastra/tools/test-tool.ts
import { createTool } from '@mastra/core/tools'
import { z } from 'zod'

export const testTool = createTool({
execute: async (inputData, context) => {
const logger = context?.mastra.getLogger()
logger?.info('tool info log')

return {
output: '',
}
},
})

추가 데이터로 로깅
추가 데이터로 로깅에 대한 직접 링크

로거 메소드는 추가 데이터에 대한 선택적인 두 번째 인수를 허용합니다. 관측 가능성 저장소에서 로그를 필터링할 수 있도록 구조화된 개체를 전달합니다.

src/mastra/workflows/test-workflow.ts
import { createWorkflow, createStep } from "@mastra/core/workflows";
import { z } from "zod";

const step1 = createStep({
execute: async ({ mastra }) => {
const testAgent = mastra.getAgent("testAgent");
const logger = mastra.getLogger();

logger.info("workflow info log", { agent: testAgent });

return {
output: ""
};
}
});

export const testWorkflow = createWorkflow({...})
.then(step1)
.commit();