Node.js SDK
Node.js SDK
Install
npm install @logtracehq/logtrace-nodeUsage
import { Logtrace } from "@logtracehq/logtrace-node";
const client = Logtrace.new(process.env.LOGTRACE_API_KEY!);
// Track an application event
await client.createEvent({
name: "invoice.created",
user_id: "user_123",
username: "jane.doe",
metadata: {
invoiceId: "inv_456",
amount: 250000,
currency: "UGX",
},
});
// Track a user session
await client.createSession({
user_id: "user_123",
login_at: new Date(),
status: "active",
});
// Create an audit log entry
await client.createAuditLog({
name: "user.updated",
timestamp: new Date(),
user_id: "user_123",
username: "jane.doe",
metadata: {
role: {
old: "user",
new: "admin",
},
},
});Express middleware example
Automatically attaches request context (IP, method, endpoint, headers, status code) to every Logtrace call made inside a request handler.
import express from "express";
import { Logtrace, logger, fromContext } from "@logtracehq/logtrace-node";
const app = express();
const client = Logtrace.new(process.env.LOGTRACE_API_KEY!);
app.use(logger(client));
app.post("/login", async (req, res) => {
const logtrace = fromContext(client);
await logtrace.createSession({
user_id: "user_123",
login_at: new Date(),
status: "active",
});
await logtrace.createEvent({
name: "user.login",
username: "jane.doe",
user_id: "user_123",
});
res.json({ ok: true });
});fromContext() automatically enriches records with request metadata when available and falls back gracefully outside HTTP contexts (workers, cron jobs, queues, and tests).
Background jobs
import { Logtrace } from "@logtracehq/logtrace-node";
const client = Logtrace.new(process.env.LOGTRACE_API_KEY!);
async function processInvoice(invoiceId: string) {
await client.createEvent({
name: "invoice.processing.started",
type: "invoice-worker",
metadata: {
invoiceId,
},
});
// process invoice...
await client.createEvent({
name: "invoice.processing.completed",
type: "invoice-worker",
metadata: {
invoiceId,
},
});
}Error handling
import { Logtrace, LogtraceError } from "@logtracehq/logtrace-node";
const client = Logtrace.new(process.env.LOGTRACE_API_KEY!);
try {
await client.createEvent({
name: "user.created",
type: "api",
});
} catch (err) {
if (err instanceof LogtraceError) {
console.error("Logtrace API error:", {
statusCode: err.statusCode,
message: err.message,
});
} else {
console.error("Unexpected error:", err);
}
}