@page @model Status.Pages.Admin.IngestModel @{ ViewData["Title"] = "Log Ingestion"; ViewData["Page"] = "admin-ingest"; var host = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}"; }
Log Ingestion API

Status accepts logs from any application via HTTP POST. Compatible with custom HTTP sinks from Serilog, NLog, log4net, and any HTTP client.

Single Log Entry
POST @host/api/logs/ingest Content-Type: application/json { "source": "my-app", "level": "error", "message": "Something went wrong", "exception": "System.Exception: ...", "properties": "{\"userId\": 42}", "host": "prod-server-01", "traceId": "abc123" }
Batch Ingestion
POST @host/api/logs/batch Content-Type: application/json [ {"source":"app","level":"info","message":"Started"}, {"source":"app","level":"warn","message":"Slow query","properties":"{\"ms\":2400}"} ]
EonaCat.LogStack HTTP Flow (.NET)
// Install: EonaCat.LogStack var logger = new LogBuilder().WriteToHttp("@host/api/logs/eonacat").Build();
Serilog HTTP Sink (.NET)
// Install: Serilog.Sinks.Http Log.Logger = new LoggerConfiguration() .WriteTo.Http( requestUri: "@host/api/logs/serilog", queueLimitBytes: null) .CreateLogger();
Syslog (UDP)
# Send a syslog message using netcat (Linux/macOS) echo "<14>1 $(date -u +%Y-%m-%dT%H:%M:%SZ) my-host my-app - - - Hello from syslog" \ | nc -u -w0 YOUR_HOST 514 # Example using logger (Linux) logger -n YOUR_HOST -P 514 "Hello from syslog" # Example raw syslog message (RFC5424) <14>1 2026-03-28T12:00:00Z my-host my-app - - - Something happened # Example JSON over syslog (auto-detected) { "source": "my-app", "level": "error", "message": "Something failed", "host": "server-01", "traceId": "abc123" }
Python (requests)
import requests requests.post("@host/api/logs/ingest", json={ "source": "my-python-app", "level": "info", "message": "App started", "host": socket.gethostname() })
Log Levels
DEBUGVerbose diagnostic info
INFONormal operation events
WARNINGWarning requires attention
ERRORErrors requiring attention
CRITICALSystem critical failure / crash