Express.js
ByteHide Logger integrates seamlessly with Express.js applications through middleware and route-level logging.
Installation
Bash
npm install @bytehide/logger expressnpm install @bytehide/logger expressBasic Setup
JavaScript
const express = require('express');
const { Log } = require('@bytehide/logger');
const app = express();
// Configure logger
Log.configure({
projectToken: process.env.BYTEHIDE_PROJECT_TOKEN,
logLevel: 'info'
});
app.listen(3000, () => {
Log.info('Express server started', {
context: { port: 3000 }
});
});const express = require('express');
const { Log } = require('@bytehide/logger');
const app = express();
// Configure logger
Log.configure({
projectToken: process.env.BYTEHIDE_PROJECT_TOKEN,
logLevel: 'info'
});
app.listen(3000, () => {
Log.info('Express server started', {
context: { port: 3000 }
});
});Request Logging Middleware
JavaScript
// Log all incoming requests
app.use((req, res, next) => {
Log.info('Request received', {
context: {
method: req.method,
url: req.url,
userAgent: req.get('User-Agent'),
ip: req.ip
}
});
next();
});// Log all incoming requests
app.use((req, res, next) => {
Log.info('Request received', {
context: {
method: req.method,
url: req.url,
userAgent: req.get('User-Agent'),
ip: req.ip
}
});
next();
});Route-Level Logging
JavaScript
app.get('/api/users', async (req, res) => {
Log.info('Fetching users');
try {
const users = await getUsersFromDatabase();
Log.info('Users fetched successfully', {
context: { count: users.length }
});
res.json(users);
} catch (error) {
Log.error('Failed to fetch users', {
context: { endpoint: '/api/users' }
}, error);
res.status(500).json({ error: 'Internal server error' });
}
});app.get('/api/users', async (req, res) => {
Log.info('Fetching users');
try {
const users = await getUsersFromDatabase();
Log.info('Users fetched successfully', {
context: { count: users.length }
});
res.json(users);
} catch (error) {
Log.error('Failed to fetch users', {
context: { endpoint: '/api/users' }
}, error);
res.status(500).json({ error: 'Internal server error' });
}
});Error Handling Middleware
JavaScript
// Global error handler
app.use((error, req, res, next) => {
Log.error('Unhandled error', {
context: {
method: req.method,
url: req.url,
statusCode: res.statusCode
}
}, error);
res.status(500).json({ error: 'Internal server error' });
});// Global error handler
app.use((error, req, res, next) => {
Log.error('Unhandled error', {
context: {
method: req.method,
url: req.url,
statusCode: res.statusCode
}
}, error);
res.status(500).json({ error: 'Internal server error' });
});User Identification
JavaScript
// Middleware to identify users
app.use((req, res, next) => {
if (req.user) {
Log.identify(req.user.id, req.user.email);
}
next();
});// Middleware to identify users
app.use((req, res, next) => {
if (req.user) {
Log.identify(req.user.id, req.user.email);
}
next();
});Best Practices
Express.js Best Practices
- Use middleware for consistent request logging
- Log both successful operations and errors
- Include relevant request context in logs
- Use global error handlers for unhandled exceptions