Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/clok/kemba
A tiny debug logging tool. Ideal for CLI tools and command applications. Inspired by https://github.com/visionmedia/debug
https://github.com/clok/kemba
List: kemba
awesome awesome-go awesome-golang awesome-list cli debug debugging go golang golang-library logging
Last synced: 2 months ago
JSON representation
A tiny debug logging tool. Ideal for CLI tools and command applications. Inspired by https://github.com/visionmedia/debug
- Host: GitHub
- URL: https://github.com/clok/kemba
- Owner: clok
- License: mit
- Created: 2020-07-13T03:10:54.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-09-26T19:25:21.000Z (3 months ago)
- Last Synced: 2024-10-05T04:01:24.831Z (3 months ago)
- Topics: awesome, awesome-go, awesome-golang, awesome-list, cli, debug, debugging, go, golang, golang-library, logging
- Language: Go
- Homepage: https://pkg.go.dev/github.com/clok/kemba?tab=overview
- Size: 104 KB
- Stars: 13
- Watchers: 2
- Forks: 2
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-go - kemba - A tiny debug logging tool inspired by [debug](https://github.com/visionmedia/debug), great for CLI tools and applications. (Logging / Search and Analytic Databases)
- awesome-go-extra - kemba - 07-13T03:10:54Z|2022-08-02T20:24:22Z| (Logging / Advanced Console UIs)
README
# kemba
[![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](https://github.com/clok/kemba/blob/master/LICENSE)
[![Go Report Card](https://goreportcard.com/badge/clok/kemba)](https://goreportcard.com/report/clok/kemba)
[![Coverage Status](https://coveralls.io/repos/github/clok/kemba/badge.svg)](https://coveralls.io/github/clok/kemba)
[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white)](https://pkg.go.dev/github.com/clok/kemba?tab=overview)
[![Mentioned in Awesome
Go](https://awesome.re/mentioned-badge-flat.svg)](https://github.com/avelino/awesome-go)`debug` logging tool inspired by https://github.com/visionmedia/debug
#### Why is it named `kemba`?
`debug` is more generally considered to be [`runtime/debug`](https://golang.org/pkg/runtime/debug/) within Go. Since this takes heavy inspiration from my experiences using the `npm` module [`debug`](https://github.com/visionmedia/debug) I wanted to find a word that was somewhat connected to the inspiration. According to [Google translate](https://www.google.com/search?q=debug+in+icelandic) "debug" in English translated to Icelandic results in "kemba".
## Usage
The `kemba` logger reads the `DEBUG` and `KEMBA` environment variables to determine if a log line should be output. The logger outputs to `STDERR`.
When it is not set, the logger will immediately return, taking no action.
When the value is set (ex. `DEBUG=example:*,tool:details` and/or `KEMBA=plugin:fxn:start`), the logger will determine if it should be `enabled` when instantiated.
The value of these flags can be a simple regex alternative where a wildcard (`*`) are replaced with `.*` and all terms are prepended with `^` and appended with `$`. If a term does not include a wildcard, then an exact match it required.
Example of a wildcard in the middle of a tag string: `DEBUG=example:*:fxn` will match tags like `[example:tag1:fxn, example:tag2:fxn, example:anything:fxn, ...]`
To disabled colors, set the `NOCOLOR` environment variable to any value.
![image](https://user-images.githubusercontent.com/1429775/88557149-7973ff80-cfef-11ea-8ec2-ff332fd1b25f.png)
```go
package mainimport (
"time""github.com/clok/kemba"
)type myType struct {
a, b int
}// When the DEBUG or KEMBA environment variable is set to DEBUG=example:* the kemba logger will output to STDERR
func main () {
k := kemba.New("example:tag")
var x = []myType{
{1, 2},
{3, 4},
}
k.Printf("%#v", x)
// Output to os.Stderr
// example:tag []main.myType{main.myType{a:1, b:2}, main.myType{a:3, b:4}} +0s// Artificial delay to demonstrate the time tagging
time.Sleep(250 * time.Millisecond)
k.Printf("%# v", x)
k.Println(x)// Artificial delay to demonstrate the time tagging
time.Sleep(100 * time.Millisecond)
k.Log(x)
// All result in the same output to os.Stderr
// example:tag []main.myType{ +XXms
// example:tag {a:1, b:2},
// example:tag {a:3, b:4},
// example:tag }// Create a new logger with an extended tag
k1 := k.Extend("1")
k1.Println("a string", 12, true)
// Output to os.Stderr
// example:tag:1 a string +0s
// example:tag:1 int(12)
// example:tag:1 bool(true)
}
```## Development
1. Fork the [clok/kemba](https://github.com/clok/kemba) repo
1. Use `go >= 1.16`
1. Branch & Code
1. Run linters :broom: `golangci-lint run`
- The project uses [golangci-lint](https://golangci-lint.run/usage/install/#local-installation)
1. Commit with a Conventional Commit
1. Open a PR