Simple request logging middleware for Express. Sends logs to Apity Router. Includes server metrics collection (CPU, Memory).
npm install apitySimple request logging middleware for Express. Sends logs to Apity Router.
``bash`
npm install apity
`typescript
import express from 'express';
import { apityLogger } from 'apity';
const app = express();
app.use(express.json());
app.use(apityLogger({ appId: 'your-app-uuid' }));
// Your routes...
app.get('/api/users', (req, res) => {
res.json({ users: [] });
});
app.listen(3000);
`
`typescript
apityLogger({
// Required
appId: string, // UUID from Apity Router Master DB
// Optional
routerUrl?: string, // Router URL (default: https://router.apity.io)
ignorePaths?: string[], // Paths to skip (default: ['/health', '/', '/favicon.ico'])
sensitiveHeaders?: string[], // Additional headers to mask (default includes: authorization, cookie, x-api-key)
sensitiveFields?: string[], // Additional body fields to mask (default includes: password, token, secret)
silent?: boolean, // Suppress error logs (default: false)
debug?: boolean, // Enable debug logging (default: false)
enableMetrics?: boolean, // Enable server metrics collection (CPU, Memory) (default: false)
metricsInterval?: number // Metrics collection interval in seconds (default: 30)
});
`
Enable automatic collection of server metrics (CPU, Memory):
`typescript`
app.use(apityLogger({
appId: 'your-app-uuid',
enableMetrics: true, // Enable metrics collection
metricsInterval: 30, // Collect every 30 seconds
}));
Metrics are automatically sent to the router and stored in the server_metrics table. See Client Metrics Setup for details.
Enable debug logging to see what's happening:
`typescript`
app.use(apityLogger({
appId: 'your-app-uuid',
debug: true
}));
Output:
``
[apity] š Logger initialized
[apity] App ID: your-app-uuid
[apity] Router URL: https://router.apity.io
[apity] Ignore paths: /health, /, /favicon.ico
[apity] š„ Incoming request: GET /api/users
[apity] š¤ Response sent: GET /api/users ā 200 (45ms)
[apity] š¤ Sending log to https://router.apity.io/api/v1/logs
[apity] Method: GET /api/users
[apity] Status: 200, Duration: 45ms
[apity] ā
Log sent successfully (120ms)
ā
Non-blocking - Logs are sent asynchronously after response
ā
Auto-masking - Sensitive data (passwords, tokens) automatically hidden
ā
User-Agent parsing - Extracts device type, OS, app version
ā
TypeScript - Full type definitions included
ā
Zero config - Works out of the box with sensible defaults
ā
Debug mode - Verbose logging for troubleshooting
You can use environment variables for the app ID:
`typescript`
app.use(apityLogger({
appId: process.env.APITY_APP_ID!
}));
`bash``.env
APITY_APP_ID=your-uuid
MIT