Intelligent 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).

Logbee Microsoft Teams alert
Get notified when Google or Bing crawlers encounter an error
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);
}
Get notified when 20+ 5xx errors occur within 10 minutes
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);
}
Get notified when "/checkout/complete" fails with 500 status code
function(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);
}
Get notified when a request contains a specific error message
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);
}

Request-centric logging

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 logs Request details

Filter noisy requests

Use Interceptors to block unimportant or repetitive requests before they are logged by logbee.net.

Each interceptor runs before a request is stored. Simply call next() to continue processing - or skip it to discard the request.

Logbee Interceptors
Ignore successful health checks
function(context, next) {
    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;
        }
    }

    next();
}
Filter known bot traffic
function(context, next) {
    const statusCode = context.requestLog.response.httpStatusCode;
    const userAgent = context.requestLog.userAgent;

    if (userAgent.contains("Thinkbot") && statusCode < 500) {
        ::return;
    }

    next();
}
Skip Admin panel requests
function(context, next) {
    const statusCode = context.requestLog.response.httpStatusCode;
    const localPath = context.requestLog.url.path.toLowerCase();

    if (localPath.startsWith("/admin/")) {
        ::return;
    }

    next();
}
Ignore 404 noise for static files
function(context, next) {
    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;
        }
    }
    
    next();
}

Integrations

Pricing

Developer
free
  • 5,000 requests / month
  • unlimited applications
  • unlimited alerts
  • 2 users
Startup
14 USD / month
  • 250,000 requests / month
  • unlimited applications
  • unlimited alerts
  • unlimited users
Business
28 USD / month
  • 1,000,000 requests / month
  • unlimited applications
  • unlimited alerts
  • unlimited users
Business+
60 USD / month
  • 5,000,000 requests / month
  • unlimited applications
  • unlimited alerts
  • unlimited users
To get started, create an account. No payment information is required.
Developer
free
Standard
350 USD
one time payment
  • Standard EULA
  • Host on your own server
  • Unlimited applications
  • Unlimited updates
Enterprise
850 USD
one time payment
  • 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

Microsoft IIS Windows
Linux Linux
Azure Azure
Docker Docker

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.

Who is using logbee.net?

logbee.net is currently being used by about 108 applications, having a total number of 5,657,073 requests processed in the last 30 days.

2025 © logbee.net