From 536c7b93b89ba6afdbfaf7f59023b9f0ec9fbb05 Mon Sep 17 00:00:00 2001 From: Karan Sharma Date: Sun, 26 Jun 2022 13:00:36 +0530 Subject: [PATCH] feat: init --- .github/workflows/build.yml | 40 +++++ .github/workflows/lint.yml | 21 +++ .gitignore | 23 +++ .goreleaser.yml | 8 + Makefile | 6 + README.md | 104 +++++++++++++ benchmark_test.go | 166 ++++++++++++++++++++ examples/main.go | 40 +++++ examples/screenshot.png | Bin 0 -> 55944 bytes go.mod | 16 ++ go.sum | 17 +++ log.go | 292 ++++++++++++++++++++++++++++++++++++ log_test.go | 101 +++++++++++++ 13 files changed, 834 insertions(+) create mode 100644 .github/workflows/build.yml create mode 100644 .github/workflows/lint.yml create mode 100644 .gitignore create mode 100644 .goreleaser.yml create mode 100644 Makefile create mode 100644 README.md create mode 100644 benchmark_test.go create mode 100644 examples/main.go create mode 100644 examples/screenshot.png create mode 100644 go.mod create mode 100644 go.sum create mode 100644 log.go create mode 100644 log_test.go diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..f1ad169 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,40 @@ +name: build + +on: + push: + branches: + - 'main' + tags: + - 'v*' + pull_request: + +jobs: + build: + strategy: + matrix: + go-version: [~1.18] + os: [ ubuntu-latest, macos-latest, windows-latest ] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + - uses: actions/setup-go@v3 + with: + go-version: ${{ matrix.go-version }} + - uses: actions/cache@v3 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + - run: go test -v -failfast -race -coverpkg=./... -covermode=atomic -coverprofile=coverage.txt + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..28e8802 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,21 @@ +name: golangci-lint +on: + push: + tags: + - v* + branches: + - main + pull_request: +jobs: + golangci: + name: lint + runs-on: ubuntu-latest + steps: + - uses: actions/setup-go@v3 + with: + go-version: ~1.16 + - uses: actions/checkout@v3 + - name: golangci-lint + uses: golangci/golangci-lint-action@v3 + with: + skip-go-installation: true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a779d58 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test + +# Output of the go coverage tool, specifically when used with LiteIDE +*.out + +# Dependency directories (remove the comment below to include it) +# vendor/ + +config.toml +.env +bin/ +data/ +dist/ +.vscode/ +coverage.txt \ No newline at end of file diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000..85b513a --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,8 @@ +before: + hooks: + - go mod tidy +builds: +- skip: true + +snapshot: + name_template: '{{ incpatch .Version }}-next' diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a79bc15 --- /dev/null +++ b/Makefile @@ -0,0 +1,6 @@ +.PHONY: test +test: + go test -v -failfast -race -coverpkg=./... -covermode=atomic -coverprofile=coverage.txt + +benchmark: + go test -bench=. -benchmem diff --git a/README.md b/README.md new file mode 100644 index 0000000..2a0b1e8 --- /dev/null +++ b/README.md @@ -0,0 +1,104 @@ +# logf + +[![Go Reference](https://pkg.go.dev/badge/github.com/mr-karan/logf.svg)](https://pkg.go.dev/github.com/mr-karan/logf) +[![Go Report Card](https://goreportcard.com/badge/mr-karan/logf)](https://goreportcard.com/report/mr-karan/logf) +[![GitHub Actions](https://github.com/mr-karan/logf/actions/workflows/build.yml/badge.svg)](https://github.com/mr-karan/logf/actions/workflows/build.yml) + + +logf provides a minimal logging interface for Go applications. It emits **structured logs** ([`logfmt`](https://brandur.org/logfmt) style) in human readable and machine friendly way. + +## Example + +```go +package main + +import ( + "errors" + "time" + + "github.com/mr-karan/logf" +) + +func main() { + logger := logf.New() + // Basic log. + logger.Info("starting app") + + // Change verbosity on the fly. + logger.SetLevel(logf.DebugLevel) + logger.Debug("meant for debugging app") + + // Add extra keys to the log. + logger.WithFields(logf.Fields{ + "component": "api", + "user": "karan", + }).Info("logging with some extra metadata") + + // Log with error key. + logger.WithError(errors.New("this is a dummy error")).Error("error fetching details") + + // Enable `caller` field in the log and specify the number of frames to skip to get the caller. + logger.SetCallerFrame(true, 3) + // Change the default timestamp format. + logger.SetTimestampFormat(time.RFC3339Nano) + + // Create a logger and add fields which will be logged in every line. + requestLogger := logger.WithFields(logf.Fields{"request_id": "3MG91VKP", "ip": "1.1.1.1", "method": "GET"}) + requestLogger.Info("request success") + requestLogger.Warn("this isn't supposed to happen") + + // Log the error and set exit code as 1. + logger.Fatal("goodbye world") +} +``` + +### Text Output + +```bash +timestamp=2022-06-26T11:56:46+05:30 level=info message=starting app caller=/home/karan/Code/Personal/logf/examples/main.go:13 +timestamp=2022-06-26T11:56:46+05:30 level=debug message=meant for debugging app caller=/home/karan/Code/Personal/logf/examples/main.go:17 level=debug message=meant for debugging app timestamp=2022-06-26T11:56:46+05:30 caller=/home/karan/Code/Personal/logf/examples/main.go:17 +timestamp=2022-06-26T11:56:46+05:30 level=info message=logging with some extra metadata component=api user=karan caller=/home/karan/Code/Personal/logf/examples/main.go:23 +timestamp=2022-06-26T11:56:46+05:30 level=error message=error fetching details error=this is a dummy error caller=/home/karan/Code/Personal/logf/examples/main.go:26 +timestamp=2022-06-26T11:56:46.412189111+05:30 level=info message=request success ip=1.1.1.1 method=GET request_id=3MG91VKP +timestamp=2022-06-26T11:56:46.412204619+05:30 level=warn message=this isn't supposed to happen ip=1.1.1.1 level=warn message=this isn't supposed to happen method=GET request_id=3MG91VKP timestamp=2022-06-26T11:56:46.412204619+05:30 +timestamp=2022-06-26T11:56:46.412218628+05:30 level=fatal message=goodbye world ip=1.1.1.1 level=fatal message=goodbye world method=GET request_id=3MG91VKP timestamp=2022-06-26T11:56:46.412218628+05:30 +exit status 1 +``` + +### Console Output + +![](examples/screenshot.png) + +## Why another lib + +Agreed there are many logging libraries out there but I was dissatisfied with the current options. + +`logf` satisfies my constraints of: + +- Clean API +- Minimal Dependencies +- Structured logging but human readable (`logfmt`!) +- Sane defaults out of the box + +## Benchmarks + +You can run benchmarks with `make bench`. + +``` +BenchmarkNoField-8 290559 3797 ns/op 1576 B/op 74 allocs/op +BenchmarkNoField_NoColor-8 1313766 924.8 ns/op 328 B/op 11 allocs/op +BenchmarkOneField-8 219285 5445 ns/op 2609 B/op 103 allocs/op +BenchmarkOneField_NoColor-8 668251 1550 ns/op 928 B/op 19 allocs/op +BenchmarkThreeFields-8 152988 7992 ns/op 3953 B/op 153 allocs/op +BenchmarkThreeFields_NoColor-8 516135 2220 ns/op 1320 B/op 27 allocs/op +BenchmarkHugePayload-8 57367 22658 ns/op 15121 B/op 356 allocs/op +BenchmarkHugePayload_NoColor-8 140937 7404 ns/op 8342 B/op 62 allocs/op +BenchmarkErrorField-8 212184 5639 ns/op 2657 B/op 104 allocs/op +BenchmarkErrorField_NoColor-8 703165 1593 ns/op 952 B/op 20 allocs/op +``` + +For a comparison with existing popular libs, visit [uber-go/zap#performance](https://github.com/uber-go/zap#performance). + +## LICENSE + +[LICENSE](./LICENSE) diff --git a/benchmark_test.go b/benchmark_test.go new file mode 100644 index 0000000..1260c9f --- /dev/null +++ b/benchmark_test.go @@ -0,0 +1,166 @@ +package logf_test + +import ( + "errors" + "io" + "testing" + + "github.com/mr-karan/logf" +) + +func BenchmarkNoField(b *testing.B) { + logger := logf.New() + logger.SetWriter(io.Discard) + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + logger.Info("hello world") + } +} + +func BenchmarkNoField_NoColor(b *testing.B) { + logger := logf.New() + logger.SetWriter(io.Discard) + logger.SetColorOutput(false) + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + logger.Info("hello world") + } +} + +func BenchmarkOneField(b *testing.B) { + logger := logf.New() + logger.SetWriter(io.Discard) + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + logger.WithFields(logf.Fields{"stack": "testing"}).Info("hello world") + } +} + +func BenchmarkOneField_NoColor(b *testing.B) { + logger := logf.New() + logger.SetWriter(io.Discard) + logger.SetColorOutput(false) + b.ReportAllocs() + b.ResetTimer() + for i := 0; i < b.N; i++ { + logger.WithFields(logf.Fields{"stack": "testing"}).Info("hello world") + } +} + +func BenchmarkThreeFields(b *testing.B) { + logger := logf.New() + logger.SetWriter(io.Discard) + b.ReportAllocs() + b.ResetTimer() + + for i := 0; i < b.N; i++ { + logger.WithFields(logf.Fields{ + "component": "api", + "method": "GET", + "bytes": 1 << 18, + }).Info("request completed") + } +} + +func BenchmarkThreeFields_NoColor(b *testing.B) { + logger := logf.New() + logger.SetWriter(io.Discard) + logger.SetColorOutput(false) + b.ReportAllocs() + b.ResetTimer() + + for i := 0; i < b.N; i++ { + logger.WithFields(logf.Fields{ + "component": "api", + "method": "GET", + "bytes": 1 << 18, + }).Info("request completed") + } +} + +func BenchmarkHugePayload(b *testing.B) { + logger := logf.New() + logger.SetWriter(io.Discard) + b.ReportAllocs() + b.ResetTimer() + + for i := 0; i < b.N; i++ { + logger.WithFields(logf.Fields{ + "id": 11, + "title": "perfume Oil", + "description": "Mega Discount, Impression of A...", + "price": 13, + "discountPercentage": 8.4, + "rating": 4.26, + "stock": 65, + "brand": "Impression of Acqua Di Gio", + "category": "fragrances", + "thumbnail": "https://dummyjson.com/image/i/products/11/thumbnail.jpg", + "images": []string{ + "https://dummyjson.com/image/i/products/11/1.jpg", + "https://dummyjson.com/image/i/products/11/2.jpg", + "https://dummyjson.com/image/i/products/11/3.jpg", + "https://dummyjson.com/image/i/products/11/thumbnail.jpg", + }, + }).Info("fetched details") + } +} + +func BenchmarkHugePayload_NoColor(b *testing.B) { + logger := logf.New() + logger.SetWriter(io.Discard) + logger.SetColorOutput(false) + b.ReportAllocs() + b.ResetTimer() + + for i := 0; i < b.N; i++ { + logger.WithFields(logf.Fields{ + "id": 11, + "title": "perfume Oil", + "description": "Mega Discount, Impression of A...", + "price": 13, + "discountPercentage": 8.4, + "rating": 4.26, + "stock": 65, + "brand": "Impression of Acqua Di Gio", + "category": "fragrances", + "thumbnail": "https://dummyjson.com/image/i/products/11/thumbnail.jpg", + "images": []string{ + "https://dummyjson.com/image/i/products/11/1.jpg", + "https://dummyjson.com/image/i/products/11/2.jpg", + "https://dummyjson.com/image/i/products/11/3.jpg", + "https://dummyjson.com/image/i/products/11/thumbnail.jpg", + }, + }).Info("fetched details") + } +} + +func BenchmarkErrorField(b *testing.B) { + logger := logf.New() + logger.SetWriter(io.Discard) + b.ReportAllocs() + b.ResetTimer() + + fakeErr := errors.New("fake error") + + for i := 0; i < b.N; i++ { + logger.WithError(fakeErr).Error("request failed") + } +} + +func BenchmarkErrorField_NoColor(b *testing.B) { + logger := logf.New() + logger.SetWriter(io.Discard) + logger.SetColorOutput(false) + b.ReportAllocs() + b.ResetTimer() + + fakeErr := errors.New("fake error") + + for i := 0; i < b.N; i++ { + logger.WithError(fakeErr).Error("request failed") + } +} diff --git a/examples/main.go b/examples/main.go new file mode 100644 index 0000000..f81e9ac --- /dev/null +++ b/examples/main.go @@ -0,0 +1,40 @@ +package main + +import ( + "errors" + "time" + + "github.com/mr-karan/logf" +) + +func main() { + logger := logf.New() + // Basic log. + logger.Info("starting app") + + // Change verbosity on the fly. + logger.SetLevel(logf.DebugLevel) + logger.Debug("meant for debugging app") + + // Add extra keys to the log. + logger.WithFields(logf.Fields{ + "component": "api", + "user": "karan", + }).Info("logging with some extra metadata") + + // Log with error key. + logger.WithError(errors.New("this is a dummy error")).Error("error fetching details") + + // Enable `caller` field in the log and specify the number of frames to skip to get the caller. + logger.SetCallerFrame(true, 3) + // Change the default timestamp format. + logger.SetTimestampFormat(time.RFC3339Nano) + + // Create a logger and add fields which will be logged in every line. + requestLogger := logger.WithFields(logf.Fields{"request_id": "3MG91VKP", "ip": "1.1.1.1", "method": "GET"}) + requestLogger.Info("request success") + requestLogger.Warn("this isn't supposed to happen") + + // Log the error and set exit code as 1. + logger.Fatal("goodbye world") +} diff --git a/examples/screenshot.png b/examples/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..6d3e1714a1f38e4b71cdb0f183ec1555ca47fed5 GIT binary patch literal 55944 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