Skip to main content

Overview

Basic logging helps you debug issues and track agent interactions.

Basic Logging

Log important events for debugging.
import { AGIClient } from 'agi';
import winston from 'winston';

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.printf(({ timestamp, level, message }) => {
      return `${timestamp} - ${level} - ${message}`;
    })
  ),
  transports: [new winston.transports.Console()]
});

const client = new AGIClient({ apiKey: 'your_api_key' });

async function runTaskWithLogging(task) {
  const startTime = Date.now();
  let session = null;

  try {
    session = await client.createSession('agi-0');
    logger.info(`Session created: ${session.session_id}`);

    await client.sendMessage(session.session_id, task);
    logger.info(`Message sent to ${session.session_id}`);

    const result = await client.waitForCompletion(session.session_id);
    
    const duration = ((Date.now() - startTime) / 1000).toFixed(2);
    logger.info(`Task completed in ${duration}s`);
    
    return result;
  } catch (e) {
    const duration = ((Date.now() - startTime) / 1000).toFixed(2);
    logger.error(`Task failed after ${duration}s: ${e.message}`);
    throw e;
  } finally {
    if (session) {
      await client.deleteSession(session.session_id);
      logger.info(`Session deleted: ${session.session_id}`);
    }
  }
}

Track Performance

Monitor task duration and success rates.
function trackPerformance(taskFunc) {
  return async function(...args) {
    const startTime = Date.now();
    let success = false;
    
    try {
      const result = await taskFunc(...args);
      success = true;
      return result;
    } finally {
      const duration = ((Date.now() - startTime) / 1000).toFixed(2);
      logger.info(`Task ${success ? 'succeeded' : 'failed'} in ${duration}s`);
    }
  };
}

// Usage
const checkPrice = trackPerformance(async (product) => {
  // ... task implementation ...
});

Best Practices

Log Key Events

Log session creation, completion, and errors

Track Duration

Monitor task execution time

Log Errors

Always log errors with context

Use Structured Logs

Use JSON format for easier parsing