Documentation for AuditLedge — production-grade audit logs for SaaS
Add AuditLedge to an Express app in minutes.
npm install auditledge
// lib/audit.js
const AuditLedge = require('auditledge');
module.exports = new AuditLedge(process.env.AUDITLEDGE_API_KEY);
const express = require('express');
const audit = require('./lib/audit');
const router = express.Router();
router.delete('/invoices/:id', async (req, res) => {
const { id } = req.params;
// your delete logic here
audit.log({
actor: {
id: req.user.id,
name: req.user.name,
email: req.user.email
},
action: 'invoice.deleted',
resource: { type: 'invoice', id },
organization_id: req.user.organizationId,
metadata: { ip: req.ip }
}).catch(console.error);
res.json({ success: true });
});
For high-volume apps, centralize logging with a middleware:
// middleware/audit.js
const audit = require('../lib/audit');
module.exports = function auditLog(action, getResource) {
return (req, res, next) => {
res.on('finish', () => {
if (res.statusCode < 400) {
audit.log({
actor: { id: req.user.id, name: req.user.name },
action,
resource: getResource(req),
organization_id: req.user.organizationId,
metadata: { ip: req.ip, status: res.statusCode }
}).catch(console.error);
}
});
next();
};
};
// Usage
router.delete(
'/invoices/:id',
auditLog('invoice.deleted', (req) => ({ type: 'invoice', id: req.params.id })),
deleteInvoiceHandler
);