Clogger: a WIP version of my idealized logging system

Clogger

Clogger is a WIP version of my idealized logging system. In many ways, it is similar to syslog-ng, FluentBit, or LogStash, but tailored with features that I want in a logging system.

Features

Some of the notable features that already exist:

  • Arbitrary filters, written in Tengo
  • Deep Observability - Clogger comes with Metrics, Logs, and Tracing out of the box to help debug and monitor pipelines
  • Buffer locations - In the case that an output destination is down, buffer outputs can be configured as an alternative location to send messages to

Configuration

Any valid clogger configuration is also a valid GraphViz DOT file, meaning that you can directly render out your configurations into diagrams of your pipeline.

Inputs, Outputs, and Filters all form nodes in the graph, with edges being the pipes between them. Properties of a node are defined in the DOT attributes, e.g. to construct a Unix Socket Input (an input that receives data over a UNIX socket), you can use the following (note that attributes with special chars have to be quoted):

MyInput [type=unix listen="/run/clogger.sock"]

The one mandatory attribute on each node is the type attribute - this defines what kind of input, output, or filter it is. Beyond that, each node type can define its own attributes (such as the above Unix input defining a listen attribute to determine where to place the socket).

You could also construct a StdOutput (An output that sends messages to the local stdout) similarly:

MyOutput [type=stdout format=console color=true]

Note that we've specified that we want to output a Colored Console output instead of the default JSON.

We can string them together into a complete config like so:

digraph pipeline {
    MyInput [type=unix listen="/run/clogger/clogger.sock"]
    MyOutput [type=stdout format=console color=true]

    MyInput -> MyOutput
}

Which creates a Clogger instance that reads data from a Unix socket and writes it to the console

Similar Resources

Logging library for Golang

GLO Logging library for Golang Inspired by Monolog for PHP, severity levels are identical Install go get github.com/lajosbencz/glo Severity levels Deb

Sep 26, 2022

Simple and configurable Logging in Go, with level, formatters and writers

go-log Logging package similar to log4j for the Golang. Support dynamic log level Support customized formatter TextFormatter JSONFormatter Support mul

Sep 26, 2022

The Simplest and worst logging library ever written

gologger A Simple Easy to use go logger library. Displays Colored log into console in any unix or windows platform. You can even store your logs in fi

Sep 26, 2022

Go implementation of systemd Journal's native API for logging

journald Package journald offers Go implementation of systemd Journal's native API for logging. Key features are: based on a connection-less socket wo

Dec 23, 2022

Structured logging package for Go.

Structured logging package for Go.

Package log implements a simple structured logging API inspired by Logrus, designed with centralization in mind. Read more on Medium. Handlers apexlog

Dec 24, 2022

Simple, configurable and scalable Structured Logging for Go.

log Log is a simple, highly configurable, Structured Logging library Why another logging library? There's allot of great stuff out there, but also tho

Sep 26, 2022

LogVoyage - logging SaaS written in GoLang

LogVoyage - logging SaaS written in GoLang

No longer maintained, sorry. Completely rewritten v2 is going to be released soon. Please follow http://github.com/logvoyage LogVoyage - fast and simp

Sep 26, 2022

Structured, composable logging for Go

Structured, composable logging for Go

log15 Package log15 provides an opinionated, simple toolkit for best-practice logging in Go (golang) that is both human and machine readable. It is mo

Dec 18, 2022

Minimalistic logging library for Go.

Minimalistic logging library for Go.

logger Minimalistic logging library for Go. Blog Post Features: Advanced output filters (package and/or level) Attributes Timers for measuring perform

Nov 16, 2022
Comments
  • TLS for Socket Outputter

    TLS for Socket Outputter

    The socket inputter can serve a TLS cert, but the socket outputter can't talk to it because there's no way to enable tls on the net.Dial call. We should add that functionality to it

Gomol is a library for structured, multiple-output logging for Go with extensible logging outputs

gomol Gomol (Go Multi-Output Logger) is an MIT-licensed structured logging library for Go. Gomol grew from a desire to have a structured logging libra

Sep 26, 2022
A simple logging module for go, with a rotating file feature and console logging.

A simple logging module for go, with a rotating file feature and console logging. Installation go get github.com/jbrodriguez/mlog Usage Sample usage W

Dec 14, 2022
FactorLog is a logging infrastructure for Go that provides numerous logging functions for whatever your style may be
FactorLog is a logging infrastructure for Go that provides numerous logging functions for whatever your style may be

FactorLog FactorLog is a fast logging infrastructure for Go that provides numerous logging functions for whatever your style may be. It could easily b

Aug 3, 2022
Package logging implements a logging infrastructure for Go
Package logging implements a logging infrastructure for Go

Golang logging library Package logging implements a logging infrastructure for Go. Its output format is customizable and supports different logging ba

Nov 10, 2021
An example logging system using Prometheus, Loki, and Grafana.
An example logging system using Prometheus, Loki, and Grafana.

Logging Example Structure Collector Export numerical data for Prometheus and log data for Promtail. Exporter uses port 8080 Log files are saved to ./c

Nov 21, 2022
Wlog: Logging System Desgned For Web

Logging System Desgned For Web Clean This is very clean logging system and easy

May 14, 2022
WIP Go Thing to download HCP Vault Logs

Example Go Script to pull HCP Vault Audit Logs WARNING: This makes use of unstable preview APIs which could change at any time! USE AT YOUR OWN PERIL

Feb 6, 2022
A version control system to manage large files.

ArtiVC ArtiVC (Artifacts Version Control) is a handy command-line tool for data versioning on cloud storage. With only one command, it helps you neatl

Jan 4, 2023
Logging, distilled

What is distillog? distillog aims to offer a minimalistic logging interface that also supports log levels. It takes the stdlib API and only slightly e

Dec 14, 2022
Simple and blazing fast lockfree logging library for golang
Simple and blazing fast lockfree logging library for golang

glg is simple golang logging library Requirement Go 1.11 Installation go get github.com/kpango/glg Example package main import ( "net/http" "time"

Nov 28, 2022