Skip to content

Logging ​

The SDK includes a comprehensive logging system for debugging and monitoring.

Log Levels ​

typescript
import { LogLevel } from "@egain/ai-agent-sdk";

LogLevel.TRACE  // 0 - Most verbose
LogLevel.DEBUG  // 1 - Debug information
LogLevel.INFO   // 2 - General information (default)
LogLevel.WARN   // 3 - Warnings
LogLevel.ERROR  // 4 - Errors only

Configuring Logging ​

typescript
import { AiAgent, LogLevel } from "@egain/ai-agent-sdk";

const agent = new AiAgent({
  id: "agent-id",
  endpoint: "https://endpoint.com",
  auth: { type: "pre-auth", accessToken: "your-access-token" },
  
  logLevel: LogLevel.DEBUG,  // Set log level
  enableLogging: true        // Enable console output
});

Disabling Logging ​

typescript
const agent = new AiAgent({
  // ...
  enableLogging: false  // No console output
});

Custom Logger ​

Provide your own logger instance:

typescript
import { Logger, LogLevel, AiAgent } from "@egain/ai-agent-sdk";

const logger = new Logger({
  level: LogLevel.DEBUG,
  enableConsole: true,
  name: "MyApp"
});

const agent = new AiAgent({
  // ...
  logger: logger
});

Logger Events ​

Subscribe to log events:

typescript
agent.logger.on("log", (entry) => {
  console.log(`[${entry.level}] ${entry.message}`, entry.context);
  
  // Send to external logging service
  if (entry.level >= LogLevel.WARN) {
    sendToLogService(entry);
  }
});

Log Entry Structure ​

typescript
interface LogEntry {
  level: LogLevel;
  message: string;
  timestamp: number;
  name?: string;
  context?: Record<string, any>;
}

Accessing the Logger ​

typescript
// Use agent's logger
agent.logger.debug("Custom debug message");
agent.logger.info("Info message", { userId: "123" });
agent.logger.warn("Warning message");
agent.logger.error("Error message", { error: someError });

Log Level Utilities ​

typescript
import { 
  getLevelName, 
  getLevelValue, 
  isLevelEnabled 
} from "@egain/ai-agent-sdk";

getLevelName(LogLevel.INFO);  // "INFO"
getLevelValue("INFO");        // LogLevel.INFO
isLevelEnabled(LogLevel.DEBUG, LogLevel.INFO);  // false

Production Configuration ​

typescript
const isProd = process.env.NODE_ENV === "production";

const agent = new AiAgent({
  // ...
  logLevel: isProd ? LogLevel.WARN : LogLevel.DEBUG,
  enableLogging: !isProd  // Disable console in production
});

// In production, use event-based logging
if (isProd) {
  agent.logger.on("log", (entry) => {
    if (entry.level >= LogLevel.WARN) {
      sendToLoggingService(entry);
    }
  });
}

Best Practices ​

  1. Use DEBUG in development for detailed information
  2. Use INFO or WARN in production to reduce noise
  3. Subscribe to log events for external logging services
  4. Disable console output in production for performance

Released under the MIT License.