feat: add comprehensive logging system with file output
- Add backend logging to logs/backend.log with file rotation support - Add frontend logging to logs/frontend.log via /api/logs endpoint - Add frontend logger utility with batching and user context - Update .gitignore to exclude log files but preserve logs directory - Update CLAUDE.md with logging documentation and usage examples Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
32
CLAUDE.md
32
CLAUDE.md
@@ -21,11 +21,36 @@ Default to using Bun instead of Node.js.
|
||||
|
||||
## Logging
|
||||
|
||||
The application uses a custom logger in `src/backend/config.js`:
|
||||
The application uses a custom logger that outputs to both files and console.
|
||||
|
||||
### Backend Logging
|
||||
|
||||
Backend logs are written to `logs/backend.log`:
|
||||
- **Log levels**: `debug` (0), `info` (1), `warn` (2), `error` (3)
|
||||
- **Default**: `debug` in development, `info` in production
|
||||
- **Override**: Set `LOG_LEVEL` environment variable (e.g., `LOG_LEVEL=debug`)
|
||||
- **Output format**: `[timestamp] LEVEL: message` with JSON data
|
||||
- **Console**: Also outputs to console in development mode
|
||||
- **File**: Always writes to `logs/backend.log`
|
||||
|
||||
### Frontend Logging
|
||||
|
||||
Frontend logs are sent to the backend and written to `logs/frontend.log`:
|
||||
- **Logger**: `src/frontend/src/lib/logger.js`
|
||||
- **Endpoint**: `POST /api/logs`
|
||||
- **Batching**: Batches logs (up to 10 entries or 5 seconds) for performance
|
||||
- **User context**: Automatically includes userId and user-agent
|
||||
- **Levels**: Same as backend (debug, info, warn, error)
|
||||
|
||||
**Usage in frontend**:
|
||||
```javascript
|
||||
import { logger } from '$lib/logger';
|
||||
|
||||
logger.info('User action', { action: 'click', element: 'button' });
|
||||
logger.error('API error', { error: err.message });
|
||||
logger.warn('Deprecated feature used');
|
||||
logger.debug('Component state', { state: componentState });
|
||||
```
|
||||
|
||||
**Important**: The logger uses the nullish coalescing operator (`??`) to handle log levels. This ensures that `debug` (level 0) is not treated as falsy.
|
||||
|
||||
@@ -35,6 +60,11 @@ NODE_ENV=development
|
||||
LOG_LEVEL=debug
|
||||
```
|
||||
|
||||
**Log Files**:
|
||||
- `logs/backend.log` - Backend server logs
|
||||
- `logs/frontend.log` - Frontend client logs
|
||||
- Logs are excluded from git via `.gitignore`
|
||||
|
||||
## Testing
|
||||
|
||||
Use `bun test` to run tests.
|
||||
|
||||
Reference in New Issue
Block a user