Request logging and performance monitoring for Node.js & Browser applications
npm install reklog-requestor
yarn add reklog-request- Sign up at reklog.com
- Create a new project
- Copy your API key (starts with
rkl_)
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:
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:
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
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 logIdUse * to match multiple endpoints:
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
]
});// 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:
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, andpasswordare all masked - Recursive: Works on nested objects at any depth
- Applied to:
body,params,requestHeaders, andresponse
Original Request Body:
{
"email": "user@example.com",
"password": "secret123",
"profile": {
"name": "John Doe",
"pin": "1234"
}
}Logged Data (with maskFields: ['password', 'pin']):
{
"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.
app.use(logger.middleware());Automatically captures:
- Endpoint and method
- Response time
- Status code
- Request body, query params, headers
- Response body
- Route parameters
MIT