Simple Yet Powerful Logger

Related tags

sypl
Overview

sypl

sypl provides a Simple Yet Powerful Logger built on top of the Golang sypl. A sypl logger can have many Outputs, and each Output is responsible for writing to a specified destination. Each Output can have multiple Processors, which run in isolation manipulating the log message. The order of execution is important, and is according to the registering (add) order. These features allow sypl to fit into many different logging flows.

Install

$ go get github.com/saucelabs/sypl

Specific version

Example: $ go get github.com/saucelabs/[email protected]

Usage

See example/ folder, and sypl_test.go file.

Documentation

Run $ make doc or check out online.

How it works

A picture worth thousand words.

high-level-arch

Development

Check out CONTRIBUTION.

Release

  1. Update CHANGELOG accordingly.
  2. Once changes from MR are merged.
  3. Tag and release.

Roadmap

Check out CHANGELOG.

Releases(v1.2.5)
  • v1.2.5(Jul 22, 2021)

  • v1.2.4(Jul 16, 2021)

  • v1.2.3(Jul 16, 2021)

    • Adds Sprint{f|lnf|ln}, and S{level}{f|lnf|ln} Convenient methods. It's your Sprint, or Sinfo (example) but also returning the non-processed content.

    Before:

    // ...
    var errMsg := "Some error"
    
    logger.Errorln(errMsg)
    
    return errors.New(errMsg)
    

    Now:

    // ...
    return logger.Serrorln("Some error") // Prints and process like `Errorln`, and returns an error.
    
    Source code(tar.gz)
    Source code(zip)
  • v1.2.2(Jul 15, 2021)

  • v1.2.1(Jul 15, 2021)

  • v1.2.0(Jul 14, 2021)

    • Improves testability, and maintainability: All "Convenient methods" are based on "Base methods" that are based on the implementation of the interface.
      • Testability: You mock the interface, and have full control over how it works.
      • Maintainability: You change the interface implementation, you change how everything works.
    • Finer-control on message's behaviour with two new Flags: SkipAndForce and SkipAndMute.
    • Adds Printlnf, and {Level}{lnf} Convenient methods. It's your Printf, or Infof (example) without the need to add "\n" to the format - less annoying repetition.

    Before:

    // ...
    exampleContent := "example"
    logger.Printf("Something %s\n", exampleContent)
    

    Now:

    // ...
    exampleContent := "example"
    logger.Printlnf("Something %s", exampleContent)
    
    Source code(tar.gz)
    Source code(zip)
  • v1.1.2(Jul 13, 2021)

  • v1.1.1(Jul 13, 2021)

    • Prefixes sypl errors making it easier to identify when happens.
    • Fixes a bug in level.FromString where invalid string would call log.Fatal
    • Adds Print{ln}Pretty which allows to print data structures as JSON text.

    Now:

    // ...
    logger.PrintlnPretty(&SomeStruct{
        nonExportedKey: "Value1",
        SomeExportedKey: "Value2",
    })
    
    // Prints:
    // {
    //     "SomeExportedKey": "Value2"
    // }
    
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Jul 13, 2021)

    • Adds the ability to tag a message, see new print{f,ln}WithOptions example.
    • Adds the ability to flag a message, see new Skip flag.
    • Adds print{f,ln}WithOptions which allows to specify message's Options such as a list of Outputs and Processors to be used.
    • Functional approach: no direct-access to data structure properties.
    • Adds more examples.
    • Adds more tests.
    • Adds more documentation.
    • Extracted Flag, Content and Level to packages.
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Jul 12, 2021)

  • v1.0.0(Jul 9, 2021)

Owner
Sauce Labs
Sauce Labs
Parse awesome-go README file and generate a new README file with repo info.

Awesome Go Extra All data are from awesome-go and GitHub API. Audio and Music Libraries for manipulating audio. Name Description Star Open Issues Crea

Wendell Sun 13 Jul 24, 2021
Structured Logging Made Easy

Structured Logging Made Easy Features Dependency Free Simple and Clean Interface Consistent Writer IOWriter, io.Writer wrapper FileWriter, rotating &

phuslu 386 Jul 22, 2021
A Go (golang) package providing high-performance asynchronous logging, message filtering by severity and category, and multiple message targets.

ozzo-log Other languages 简体中文 Русский Description ozzo-log is a Go package providing enhanced logging support for Go programs. It has the following fe

Ozzo Framework 114 May 17, 2021
A logger for Go SQL database driver without modify existing *sql.DB stdlib usage.

SQLDB-Logger A logger for Go SQL database driver without modify existing *sql.DB stdlib usage. Colored console writer output above only for sample/dev

Sarjono Mukti Aji 184 Jun 29, 2021
Dead simple, super fast, zero allocation and modular logger for Golang

Onelog Onelog is a dead simple but very efficient JSON logger. It is one of the fastest JSON logger out there. Also, it is one of the logger with the

Francois Parquet 396 Jul 16, 2021
Zero Allocation JSON Logger

Zero Allocation JSON Logger The zerolog package provides a fast and simple logger dedicated to JSON output. Zerolog's API is designed to provide both

Olivier Poitrey 5k Jul 23, 2021
A logger, for Go

Go-Log A logger, for Go! It's sort of log and code.google.com/p/log4go compatible, so in most cases can be used without any code changes. Breaking cha

Ian Kent 37 Feb 21, 2021
A minimal and extensible structured logger

⚠️ PRE-RELEASE ⚠️ DO NOT IMPORT THIS MODULE YOUR PROJECT WILL BREAK package log package log provides a minimal interface for structured logging in ser

Go kit 54 Jul 21, 2021
Structured, pluggable logging for Go.

Logrus Logrus is a structured logger for Go (golang), completely API compatible with the standard library logger. Logrus is in maintenance-mode. We wi

Simon Eskildsen 18.3k Jul 24, 2021
Logrus is a structured, pluggable logging for Go.

Logrus is a structured logger for Go (golang), completely API compatible with the standard library logger.

Simon Eskildsen 274 May 25, 2021
Simple logger for Go programs. Allows custom formats for messages.

go-logger A simple go logger for easy logging in your programs. Allows setting custom format for messages. Preview Install go get github.com/apsdehal/

Amanpreet Singh 266 Jul 15, 2021
lumberjack is a log rolling package for Go

lumberjack Lumberjack is a Go package for writing logs to rolling files. Package lumberjack provides a rolling logger. Note that this is v2.0 of lumbe

Nate Finch 2.7k Jul 25, 2021
xlog is a logger for net/context aware HTTP applications

⚠️ Check zerolog, the successor of xlog. HTTP Handler Logger xlog is a logger for net/context aware HTTP applications. Unlike most loggers, xlog will

Olivier Poitrey 135 Feb 19, 2021
Structured log interface

Structured log interface Package log provides the separation of the logging interface from its implementation and decouples the logger backend from yo

teris.io 24 Jan 3, 2021