admin-error-monitor-package
v1.0.0
Published
Reusable Express middleware for error log monitoring with EJS dashboard UI.
Maintainers
Readme
error-monitor-package
Reusable error-monitoring dashboard middleware for Express apps with bundled EJS UI, filtering, pagination, and bulk actions.
Overview
error-monitor-package provides a plug-and-play admin dashboard to inspect and manage application errors.
Key features:
- Provider-based architecture (no built-in DB dependency)
- Bundled EJS templates and static assets
- Filtering by severity, status, and date range
- Pagination and severity sorting
- Bulk select/delete
- Mark fixed/pending from list or detail/edit screen
- Optional purge-all-fixed action
Installation
npm install error-monitor-packageBasic Usage
import express from "express";
import { errorMonitor, type ErrorLog } from "error-monitor-package";
const app = express();
app.use(
"/admin/errors",
errorMonitor({
getData: async (filters) => {
// return either ErrorLog[] or { data, total }
return { data: [], total: 0 };
},
getById: async (id) => null,
deleteLogs: async (ids) => {},
updateStatus: async (id, status) => {},
purgeFixed: async () => {},
options: {
pageSize: 20,
enableBulkActions: true,
enableDeleteAll: true
}
})
);Data Contract
export interface ErrorLog {
id: string;
message: string;
severity: "low" | "medium" | "high";
status: "pending" | "fixed";
createdAt: Date;
meta?: any;
}Data Mapping Example
Example with Mongo documents:
import ErrorLogModel from "./models/ErrorLog";
import type { ErrorLog } from "error-monitor-package";
function mapDoc(doc: any): ErrorLog {
return {
id: String(doc._id),
message: doc.errorMessage,
severity: doc.severity ?? "low",
status: doc.resolutionStatus ?? "pending",
createdAt: doc.createdAt,
meta: {
method: doc.method,
path: doc.path,
stack: doc.stack
}
};
}API Reference
errorMonitor(config)
Returns an Express.Router middleware that you mount with:
app.use("/admin/errors", errorMonitor(config));Config
Required:
getData(filters)
Receives normalized filters (page,limit,severity,status,createdFrom,createdTo,sortOrder) and returns either:ErrorLog[]or{ data: ErrorLog[]; total: number }
deleteLogs(ids)updateStatus(id, status)
Optional:
getById(id)for detail and edit pagespurgeFixed()for delete-all-fixed action
Options
{
pageSize?: number; // default: 10
enableBulkActions?: boolean; // default: true
enableDeleteAll?: boolean; // default: true
}Features
Filtering
- Severity:
low | medium | high - Status:
pending | fixed - Date range:
createdFrom,createdTo
Pagination
- Server-side paging via
page+limit - Total pages computed from provider total count
Bulk Actions
- Select all / deselect all current page rows
- Bulk update status to fixed/pending
- Bulk delete selected rows
- Optional purge all fixed rows
Customization
- Use provider callbacks to connect any datastore (Mongo, SQL, API, files, etc.)
- Use
optionsto enable/disable bulk and destructive actions - Extend
metapayload for custom detail rendering context
Folder Structure
error-monitor/
├── src/
│ ├── core/
│ ├── middleware/
│ ├── public/
│ ├── types/
│ ├── utils/
│ ├── views/
│ └── index.ts
├── package.json
├── tsconfig.json
└── tsup.config.tsDevelopment
npm install
npm run buildExample App
A runnable Express sample is included at:
examples/express-app
Run it with:
cd examples/express-app
npm install
npm startBuild output:
dist/index.js(ESM)dist/index.cjs(CommonJS)dist/index.d.ts(types)dist/views/*,dist/public/*(bundled assets)
Contribution Guide
- Fork and clone the repository.
- Install dependencies with
npm install. - Implement changes in
src/. - Run
npm run buildand verify middleware behavior. - Open a PR with a clear summary and test notes.
