A lightweight, container-ready log aggregation platform.
Built for developers, friendly for teams.
- Cloud or self-hosted
- Deployable on IIS, Linux/Docker, or Microsoft Azure
- Centralized monitoring for HTTP, logs, and exceptions
- Free plan available. No credit card required.
Per request and window-based alerting
Alerts are written in JavaScript and run for every request captured by logbee.net. They have full access to request details, including URL, status code, and logs.
You decide when an alert triggers by calling callback(true)
.

function(context, callback) { // eg: "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" const userAgent = context.requestLog.userAgent; const statusCode = context.requestLog.response.httpStatusCode; if(statusCode >= 500) { if(/Google/i.test(userAgent) || /bingbot/i.test(userAgent)) { ::return callback(true); } } return callback(false); }
function (scheduledContext, callback) { const count = await scheduledContext.requests.count([ { field: "startDateTime", value: new Date(Date.now() - 10 * 60 * 1000).toISOString(), operator: "GreaterOrEqualThan" }, { field: "httpStatusCode", value: 500, operator: "GreaterOrEqualThan" } ]); callback(count >= 20); }
/checkout/complete
fails with 500 status codefunction(context, callback) { const path = context.requestLog.url.path.toLowerCase(); const statusCode = context.requestLog.response.httpStatusCode; const isLocalhost = context.requestLog.url.absoluteUri.includes("localhost"); if(!isLocalhost) { if(path === "/checkout/complete" && statusCode >= 500) { ::return(true); } } return callback(false); }
function(context, callback) { const errors = [ "Object reference not set to an instance of an object", "Sequence contains no elements" ]; for (let i = 0; i < context.requestLog.logs.length; i++) { const log = context.requestLog.logs[i]; if(errors.some(msg => "Error" === log.logLevel && log.message.includes(msg))) { ::return callback(true); } } return callback(false); }
HTTP logging with full context
logbee.net stores all HTTP requests individually, alongside all their related logs, in the order as they occurred. See every request as a complete story.
Request URL, body, headers, status code, and logs - everything in one view.


Request interceptors
Not every request needs to be logged. With interceptors, you can block irrelevant, sensitive, or repetitive logs before they are captured by logbee.net.
Interceptors run before a request is saved, and have access to all the properties - URL, status code, headers and logs. Calling the reject()
function prevents the request from being stored.

200 GET /status/ping
health checksfunction(context, reject) { const statusCode = context.requestLog.response.httpStatusCode; const localPath = context.requestLog.url.path.toLowerCase(); const method = context.requestLog.httpMethod; if (localPath === "/status/ping".toLowerCase() && /GET/i.test(method)) { if(statusCode === 200) { ::return reject(); } } // otherwise, allow the request to be saved }
function(context, reject) { const statusCode = context.requestLog.response.httpStatusCode; const userAgent = context.requestLog.userAgent; if (userAgent.contains("Thinkbot") && statusCode < 500) { ::return reject(); } // otherwise, allow the request to be saved }
/payment/*
requestsfunction(context, reject) { const statusCode = context.requestLog.response.httpStatusCode; const localPath = context.requestLog.url.path.toLowerCase(); if (localPath.startsWith("/payment/")) { ::return reject(); } // otherwise, allow the request to be saved }
function(context, reject) { const statusCode = context.requestLog.response.httpStatusCode; const path = context.requestLog.url.path.toLowerCase(); if(statusCode === 404) { if(path.endsWith(".ico") || path.endsWith(".map") || path.includes("/static/")) { ::return reject(); } } // otherwise, allow the request to be saved }
Simplified self-hosting
Logbee runs with just two web apps (UI and Service), and a database.
Deployable on Docker/Kubernetes, IIS, or Azure.
Database options include MongoDB, CosmosDB, MySQL, or SQL Server (more storage options under way).
Each application is configured through a simple JSON file.
-
docker pull catalingavan/logbee.frontend:2.1.4
-
docker pull catalingavan/logbee.backend:2.1.2
Integrations
Pricing
- 5,000 requests / month
- unlimited applications
- unlimited alerts
- 2 users
- 250,000 requests / month
- unlimited applications
- unlimited alerts
- unlimited users
- 1,000,000 requests / month
- unlimited applications
- unlimited alerts
- unlimited users
- 5,000,000 requests / month
- unlimited applications
- unlimited alerts
- unlimited users
- Standard EULA
- Host on your own server
- Limited to 2 applications
-
Download from
logbee-app GitHub page
- Standard EULA
- Host on your own server
- Unlimited applications
- Unlimited updates
- Enterprise EULA
- Host on your own server and on your clients servers
- You can ship Logbee as part of your release artifacts
- Unlimited applications
- Unlimited updates
Available on Windows, Linux, Azure, and containerized environments
Who is Logbee for?
- Developers and DevOps engineers looking for a lightweight alternative to complex monitoring tools.
- Teams working on microservices or cloud-native apps who need visibility across services.
- Software teams and vendors who want to package a logging visualization tool alongside the applications they ship.