@expo/event-log
v0.0.1-canary-966313da986180a93e86de77d4212755231e20be
Published
<div align="center"> <h2>@expo/event-log</h2> <strong>Low-overhead structured event logs for Expo CLI processes</strong> <br /> <br /> </div>
Keywords
Readme
@expo/event-log is a structured event logger for command-line tools. It writes JSONL logs
that can be replayed, tailed, inspected, or exported to trace formats.
In short, @expo/event-log,
- keeps logging cheap enough to leave enabled
- writes bounded session logs to the system temporary directory
- forwards worker and child-process events into the same session
- lets tools and agents tap into running commands
- derives typed event payloads through TypeScript declaration merging
Usage
Install logging once when a CLI command starts:
import { installEventLogger } from '@expo/event-log';
installEventLogger({ command: 'expo start -p web', version: '1.0.0' });Create a logger in any package:
import { events } from '@expo/event-log';
const log = events('metro');
log('ready', { port: 8081 });
const end = log.span('bundle', { platform: 'ios' });
end('bundle', { cached: false });Print debug-style formatted logs inline while keeping structured session logs:
LOG_DEBUG=metro:* expo start
LOG_DEBUG=* expo exportExtend EventRegistry to type event payloads:
declare module '@expo/event-log' {
interface EventRegistry {
'metro:ready': { port: number };
'metro:bundle': { platform?: string; cached?: boolean };
}
}CLI
Use the CLI to find sessions, replay logs, or export traces:
event-log ps --json
event-log tap "expo start" --filter metro:* --tail
event-log export "expo start" --format chrome-trace -o trace.json
event-log export "expo start" --format opentelemetry -o otel.json
event-log clean --jsonSelectors match a session by PID, command, session directory, or working directory.
tap and export replay retained history first. --tail appends live events.
API
events(category)creates a typed loggerinstallEventLogger(options)installs logging for the processisEventLoggerActive()returns the active destination, ornulllist(options)lists known sessionstap(sessionDir, options)replays and optionally follows a session
