Logably

Modern, multi-tenant logging service built with .NET 9.0 and PostgreSQL. Secure, scalable logging with OAuth authentication, subscription tiers, and powerful search capabilities.

Multi-Tenant
Architecture
PostgreSQL
Database Backend
OAuth 2.0
Authentication
.NET 9.0
Built With

What is Logably?

Logably is a comprehensive logging solution consisting of three components that work together to provide enterprise-grade logging capabilities.

Logably.CLI

Free & Open Source

Powerful command-line tool for searching and filtering logs with full-text search capabilities.

Serilog.Sinks.Logably

Free & Open Source

Serilog sink for .NET applications to send logs directly to the Logably platform.

Web Platform

Hosted Service

Secure hosted logging service with free tier, web dashboard, and REST API access.

Powerful Logging Features

Enterprise-grade logging capabilities designed for modern .NET applications.

Multi-Tenant

Complete tenant isolation with per-tenant data segregation and access control.

OAuth Authentication

Secure authentication with OAuth 2.0 providers including Google, Microsoft, and GitHub.

Full-Text Search

Powerful CLI tool for searching logs with advanced filtering and query capabilities.

Flexible Retention

Configurable retention policies from 7 days to custom retention for enterprise needs.

Serilog Integration

Native Serilog sink for seamless integration with existing .NET applications.

PostgreSQL Backend

Reliable, scalable PostgreSQL database for high-performance log storage and retrieval.

REST API Access

Comprehensive REST API for programmatic access to logs and system management.

Web Dashboard

Modern web interface for viewing, searching, and analyzing logs in real-time.

Get Started in Minutes

Install the CLI tool and Serilog sink to start sending logs to Logably.

Install CLI Tool

$ dotnet tool install --global Logably.CLI
Free & Open Source

Add Serilog Sink

$ dotnet add package Serilog.Sinks.Logably
Free & Open Source
Program.cs
using Serilog;
using Serilog.Sinks.Logably;

// Configure Serilog with Logably sink
Log.Logger = new LoggerConfiguration()
    .WriteTo.Console()
    .WriteTo.Logably(options =>
    {
        options.ApiKey = "your-api-key";
        options.TenantId = "your-tenant-id";
        options.Environment = "Production";
        options.BatchSize = 100;
    })
    .CreateLogger();

var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog();

// Your app continues...
var app = builder.Build();
app.Run();

CLI Usage Examples

Powerful command-line interface for searching and analyzing your logs.

Search logs by level
$ logably search --level Error --last 24h
Search by message content
$ logably search --text "database connection" --last 1h
Filter by environment and application
$ logably search --env Production --app "MyApi" --last 7d
Export logs to file
$ logably search --level Error --export errors.json
Tail logs in real-time
$ logably tail --follow --env Production

Flexible Pricing Plans

Choose the plan that fits your logging needs. Start free and scale as you grow.

Free

$0
per month
7-day log retention
1GB storage per month
Full CLI access
Web dashboard access
REST API access
Community support
Get Started Free
Most Popular

Pro

$49
per month
30-day log retention
50GB storage per month
All Free features
Advanced search filters
Email alerts
Priority email support
Upgrade to Pro

Enterprise

Custom
contact us
Custom retention period
Unlimited storage
All Pro features
SLA guarantees
Dedicated support team
On-premises option
Contact Sales

Configuration Examples

Multiple ways to configure the Serilog sink for your application.

Program.cs
using Serilog;
using Serilog.Sinks.Logably;

// Basic Logably configuration
Log.Logger = new LoggerConfiguration()
    .WriteTo.Logably(options =>
    {
        options.ApiKey = "lgb_1234567890abcdef";
        options.TenantId = "my-company";
        options.Environment = "Production";
    })
    .CreateLogger();

try
{
    Log.Information("Application starting up");

    var builder = WebApplication.CreateBuilder(args);
    builder.Host.UseSerilog();

    var app = builder.Build();
    app.Run();
}
catch (Exception ex)
{
    Log.Fatal(ex, "Application failed to start");
}
finally
{
    Log.CloseAndFlush();
}
appsettings.json
{
  "Serilog": {
    "Using": ["Serilog.Sinks.Console", "Serilog.Sinks.Logably"],
    "MinimumLevel": {
      "Default": "Information",
      "Override": {
        "Microsoft": "Warning",
        "System": "Warning"
      }
    },
    "WriteTo": [
      {
        "Name": "Console"
      },
      {
        "Name": "Logably",
        "Args": {
          "apiKey": "lgb_1234567890abcdef",
          "tenantId": "my-company",
          "environment": "Production",
          "batchSize": 100,
          "batchPeriod": "00:00:05"
        }
      }
    ],
    "Enrich": ["FromLogContext", "WithMachineName", "WithThreadId"]
  }
}
Program.cs - Advanced
using Serilog;
using Serilog.Sinks.Logably;

// Advanced configuration with all options
Log.Logger = new LoggerConfiguration()
    .MinimumLevel.Information()
    .Enrich.FromLogContext()
    .Enrich.WithMachineName()
    .Enrich.WithProperty("Application", "MyApi")
    .WriteTo.Console()
    .WriteTo.Logably(options =>
    {
        // Required settings
        options.ApiKey = Environment.GetEnvironmentVariable("LOGABLY_API_KEY");
        options.TenantId = "my-company";

        // Optional settings
        options.Environment = builder.Environment.EnvironmentName;
        options.ApplicationName = "MyApi";
        options.BatchSize = 250;
        options.BatchPeriod = TimeSpan.FromSeconds(10);
        options.MinimumLogLevel = LogEventLevel.Information;
        options.MaxRetries = 3;
        options.RetryDelay = TimeSpan.FromSeconds(2);

        // Custom properties
        options.CustomProperties = new Dictionary<string, object>
        {
            ["Version"] = "1.0.0",
            ["Region"] = "us-east-1"
        };
    })
    .CreateLogger();

Ready to Start Logging?

Get started with Logably today. Free tier available with no credit card required.