2.4 KiB
2.4 KiB
Logging Style Guide
This document defines a consistent logging style for all bot modules, covering levels silly, debug, info, warn, and error.
1. Message Structure
• Prepend a component tag in square brackets (e.g. [init], [cmd:exit], [module:responsesPrompt], [PB]).
• Follow with a concise verb phrase. Capitalize the first letter. No trailing period.
• Embed variable IDs or names in backticks.
Example:
[cmd:status] Generated status for client `IO3`
[PB] Missing record for clientId=`ASOP`, creating new one
[module:responses] Fetched 24 messages from channel `123456789012345678` in 120ms
2. Level Guidelines
- error: Unrecoverable failures. Include operation, relevant IDs, and
err.message. - warn: Recoverable issues or unexpected states (fallbacks, missing optional config).
- info: High-level lifecycle events and successful actions (login, module load, command registration).
- debug: Detailed internal state and computation values for troubleshooting.
- silly: Very verbose, lowest priority; use sparingly for deep diagnostics.
3. Where to Log
- In every
catchblock: uselogger.errorwith context and message. Optional stack at debug. - On module initialization:
logger.info“Module X loaded”. - When registering slash commands:
logger.infofor each command. - Before/after major API calls (PocketBase, OpenAI):
logger.debugwith parameters and durations. - On unexpected user input or missing resources:
logger.warn. - On successful command execution: optional
logger.info. - In background jobs (cron, cycles):
logger.infoat start/stop,logger.erroron failure.
4. Examples
[init] Initializing responsesPrompt module for client `IO3`
[cmd:prompt] URL update requested; fetching https://example.com/prompt.txt
[PB] Upsert `responses_prompts` record id=`abc123` for clientId=`IO3`
[onMessage] Should respond? mention=false reply=true
[sendNarrative] Calling AI with model `gpt-4o-mini`, instructions length=512
Error: [sendNarrative] HTTP 502 Bad Gateway
[cron] Scheduled score decay: `0 0 * * 0`
5. Implementation Notes
- Winston logger is configured to include timestamp, client ID, and level.
- Always use
logger.<level>(message)instead ofconsole.log. - Reserve
infofor user-facing or operational milestones. - Use
debug/sillyfor verbose, development-only details. - Update or remove non-conforming logs during code refactoring.