Request logging library for tracking API response times and performance
npm install reklog-request
![]()
Request logging and performance monitoring for Node.js & Browser applications
``bash`
npm install reklog-request
or
`bash`
yarn add reklog-request
---
1. Sign up at reklog.com
2. Create a new project
3. Copy your API key (starts with rkl_)
---
`javascript
const reklog = require('reklog-request');
const logger = reklog.init('rkl_your_api_key', {
environment: 'production',
host: 'https://api.example.com',
debug: false
});
`
Track external API calls or custom operations:
`javascript
async function fetchUsers() {
const logId = logger.start('/api/users', 'GET');
try {
const response = await fetch('https://api.example.com/users');
const data = await response.json();
await logger.end(logId, {
statusCode: response.status,
params: { page: 1, limit: 10 },
response: data
});
return data;
} catch (error) {
await logger.end(logId, {
statusCode: 500,
metadata: { error: error.message }
});
throw error;
}
}
`
Automatically log all requests:
`javascript
const express = require('express');
const reklog = require('reklog-request');
const app = express();
app.use(express.json());
const logger = reklog.init('rkl_your_api_key');
app.use(logger.middleware());
app.get('/api/users', (req, res) => {
res.json({ users: [] });
});
app.listen(3000);
`
---
Initialize RekLog instance.
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| apiKey | string | required | Your RekLog API key |apiUrl
| | string | https://api.reklog.com/api | API endpoint URL |environment
| | string | development | Environment name |host
| | string | null | Host identifier for requests |debug
| | boolean | false | Enable debug logging |retryAttempts
| | number | 3 | Retry attempts on failure |retryDelay
| | number | 1000 | Delay between retries (ms) |maskFields
| | array | [] | Fields to mask in logs |excludeEndpoints
| | array | [] | Endpoints to exclude from logging |
---
You can exclude specific endpoints from being logged using the excludeEndpoints option. This works for both middleware and manual logging (start()/end()).
This is useful for:
- Health check endpoints
- Static file requests
- Internal monitoring endpoints
- Any endpoints that don't need logging
`javascript
const logger = reklog.init('rkl_your_api_key', {
excludeEndpoints: ['/health', '/ping', '/metrics']
});
// Works with middleware
app.use(logger.middleware());
// Also works with manual logging
const logId = logger.start('/health', 'GET'); // Returns null, won't log
await logger.end(logId); // Safely ignores null logId
`
Use * to match multiple endpoints:
`javascript`
const logger = reklog.init('rkl_your_api_key', {
excludeEndpoints: [
'/health', // Exact match
'/api/internal/*', // All endpoints starting with /api/internal/
'/static/*', // All static file requests
'*/ping' // Any endpoint ending with /ping
]
});
`javascript
// Exclude health checks and static files
const logger = reklog.init('rkl_your_api_key', {
excludeEndpoints: ['/health', '/ready', '/static/', '/assets/']
});
// Exclude admin and internal endpoints
const logger = reklog.init('rkl_your_api_key', {
excludeEndpoints: ['/admin/', '/internal/', '*/debug']
});
// Combine with other options
const logger = reklog.init('rkl_your_api_key', {
environment: 'production',
debug: false,
maskFields: ['password', 'token'],
excludeEndpoints: ['/health', '/metrics', '/static/*']
});
`
Note: Excluded endpoints will not appear in your RekLog dashboard and won't count towards your request quota.
---
RekLog can mask sensitive data to protect user privacy and comply with data protection regulations. Sensitive field values are replaced with ** before being sent to the server.
Use the maskFields option to specify which fields should be masked:
`javascript`
const logger = reklog.init('rkl_your_api_key', {
maskFields: ['password', 'token', 'secret', 'api_key', 'credit_card', 'cvv', 'ssn']
});
Field masking is:
- Case-insensitive: Password, PASSWORD, and password are all maskedbody
- Recursive: Works on nested objects at any depth
- Applied to: , params, requestHeaders, and response
Original Request Body:
`json`
{
"email": "user@example.com",
"password": "secret123",
"profile": {
"name": "John Doe",
"pin": "1234"
}
}
Logged Data (with maskFields: ['password', 'pin']):
`json`
{
"email": "user@example.com",
"password": "**",
"profile": {
"name": "John Doe",
"pin": "**"
}
}
> Note: The masking happens on the client side before data is sent to RekLog servers, ensuring sensitive data never leaves your application.
Start tracking a request.
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| endpoint | string | required | Endpoint path |method
| | string | GET | HTTP method |
Returns: logId (string)
End tracking and send log to server.
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| logId | string | required | Log ID from start() |statusCode
| | number | 200 | HTTP status code |body
| | object | null | Request body (POST/PUT/PATCH) |params
| | object | null | Query parameters (GET) |requestHeaders
| | object | null | Request headers |response
| | object | null | Response data |metadata
| | object | {} | Additional custom data |
Returns Express middleware for automatic logging.
`javascript``
app.use(logger.middleware());
Automatically captures:
- Endpoint and method
- Response time
- Status code
- Request body, query params, headers
- Response body
- Route parameters
---
MIT