https://github.com/delixfe/zapappender
Composable appender for uber-go/zap
https://github.com/delixfe/zapappender
golang logger logging zap
Last synced: 5 months ago
JSON representation
Composable appender for uber-go/zap
- Host: GitHub
- URL: https://github.com/delixfe/zapappender
- Owner: delixfe
- License: mit
- Created: 2022-01-21T09:37:52.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-11-24T10:49:09.000Z (over 3 years ago)
- Last Synced: 2024-06-20T11:59:25.200Z (about 2 years ago)
- Topics: golang, logger, logging, zap
- Language: Go
- Homepage:
- Size: 40 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# zapappender [![Build Status][ci-img]][ci] [![Coverage Status][cov-img]][cov]
Composable appender for uber-go/zap enabling:
* Async logging
* Fallback
* Message Enveloping (like syslog formatting)
This project was created to allow logging to syslog over TCP.
## Quick start
Firstly, compose the appender chain:
```go
primaryOut := zapappender.NewWriter(zapcore.Lock(someTcpWriter))
consoleWriter := zapappender.NewWriter(zapcore.Lock(os.Stdout))
secondaryOut := zapappender.NewEnvelopingPreSuffix(consoleWriter, "FALLBACK: ", "")
fallback := zapappender.NewFallback(primaryOut, secondaryOut)
async, _ := zapappender.NewAsync(fallback,
zapappender.AsyncOnQueueNearlyFullForwardTo(secondaryOut),
zapappender.AsyncMaxQueueLength(10),
zapappender.AsyncQueueMinFreePercent(0.2),
zapappender.AsyncQueueMonitorPeriod(time.Millisecond),
)
appenderChain := async
```
Secondly, use that chain to create a `zapcore.Core` and finally to construct a `zap.Logger`.
```go
encoder := zapcore.NewConsoleEncoder(encoderConfig)
core := zapappender.NewAppenderCore(encoder, appenderChain, zapcore.DebugLevel)
logger := zap.New(core)
logger.Info("this logs async")
```
See [example_test.go](example_test.go) for more details.
[ci-img]: https://github.com/delixfe/zapappender/actions/workflows/go.yml/badge.svg
[ci]: https://github.com/delixfe/zapappender/actions/workflows/go.yml
[cov-img]: https://codecov.io/gh/delixfe/zapappender/branch/main/graph/badge.svg?token=S4C8RNUGNE
[cov]: https://codecov.io/gh/delixfe/zapappender