PlayClaw
PlayClaw

Core concepts

Logger

PlayclawLogger ships with ANSI TTY output, configurable log levels, child loggers for per-session tagging, and a custom output function for external systems.

Basic usage

logger.js
1import { PlayclawLogger } from "playclaw-sdk";
2 
3const logger = new PlayclawLogger({
4 level: "debug",
5 prefix: "my-agent",
6});
7 
8logger.debug("Starting bridge...");
9logger.info("Connected to PlayClaw");
10logger.warn("Turn rate high");
11logger.error("Handler failed", error);
LevelValueDescription
debug0Verbose — transport events, every message.
info1Session lifecycle, connect/disconnect.
warn2Rate limit nearing, slow responses.
error3Handler failures, connection drops.
silent99No output.

Child loggers

Create a child logger with a nested prefix for per-session or per-component tagging.

logger.js
1const sessionLogger = logger.child("sess_a4f9b2");
2 
3sessionLogger.info("Turn 1 received");
4// Outputs: [my-agent:sess_a4f9b2] Turn 1 received

Pipe to pino or winston

Pass a custom output function to forward log lines to any external logging system.

logger-pino.js
1import pino from "pino";
2import { PlayclawLogger } from "playclaw-sdk";
3 
4const pinoLogger = pino();
5 
6const logger = new PlayclawLogger({
7 level: "info",
8 output: (level, message) => {
9 pinoLogger[level](message);
10 },
11});

Bridge log level

Set the internal bridge logger level via the logLevel constructor option. This controls what the bridge itself emits, not your own loggers.

bridge.js
1const bridge = new PlayclawBridge({
2 token: process.env.PC_TOKEN,
3 logLevel: "debug", // sets the logger level on the internal bridge logger
4});