https://github.com/arthurkiller/rollingwriter
Rolling writer is an IO util for auto rolling write in go.
https://github.com/arthurkiller/rollingwriter
filewriter golang-library ioutil rotate rotatelog
Last synced: 19 days ago
JSON representation
Rolling writer is an IO util for auto rolling write in go.
- Host: GitHub
- URL: https://github.com/arthurkiller/rollingwriter
- Owner: arthurkiller
- License: mit
- Created: 2017-02-12T12:05:26.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2023-10-16T06:38:26.000Z (over 1 year ago)
- Last Synced: 2025-04-07T06:02:37.618Z (26 days ago)
- Topics: filewriter, golang-library, ioutil, rotate, rotatelog
- Language: Go
- Homepage:
- Size: 296 KB
- Stars: 298
- Watchers: 9
- Forks: 45
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-go-extra - rollingwriter - 02-12T12:05:26Z|2022-06-20T03:24:30Z| (Logging / Advanced Console UIs)
README
# RollingWriter [](https://travis-ci.org/arthurkiller/rollingWriter) [](https://goreportcard.com/report/github.com/arthurkiller/rollingwriter) [](https://godoc.org/github.com/arthurkiller/rollingWriter) [](https://codecov.io/gh/arthurkiller/rollingwriter) [](https://github.com/avelino/awesome-go#logging)
RollingWriter is an auto rotate `io.Writer` implementation. It can works well with logger.__Awesome Go popular log helper__
__New Version v2.0 is comming out! Much more Powerfull and Efficient. Try it by follow the demo__
RollingWriter contains 2 separate patrs:
* Manager: decide when to rotate the file with policy. RlingPolicy give out the rolling policy
* WithoutRolling: no rolling will happen
* TimeRolling: rolling by time
* VolumeRolling: rolling by file size* IOWriter: impement the io.Writer and do the io write
* Writer: not parallel safe writer
* LockedWriter: parallel safe garented by lock
* AsyncWtiter: parallel safe async writer
* BufferWriter: merge serval write into one `file.Write()`## Features
* Auto rotate with multi rotate policies
* Implement go io.Writer, provide parallel safe writer
* Max remain rolling files with auto cleanup
* Easy for user to implement your manager## Benchmark
```bash
goos: darwin
goarch: amd64
pkg: github.com/arthurkiller/rollingWriter
BenchmarkWrite-4 300000 5952 ns/op 0 B/op 0 allocs/op
BenchmarkParallelWrite-4 200000 7846 ns/op 0 B/op 0 allocs/op
BenchmarkAsynWrite-4 200000 7917 ns/op 16324 B/op 1 allocs/op
BenchmarkParallelAsynWrite-4 200000 8632 ns/op 12513 B/op 1 allocs/op
BenchmarkLockedWrite-4 200000 5829 ns/op 0 B/op 0 allocs/op
BenchmarkParallelLockedWrite-4 200000 7796 ns/op 0 B/op 0 allocs/op
BenchmarkBufferWrite-4 200000 6943 ns/op 1984 B/op 4 allocs/op
BenchmarkParallelBufferWrite-4 1000000 1026 ns/op 7129 B/op 1 allocs/op
PASS
ok github.com/arthurkiller/rollingWriter 14.867s
```## Quick Start
```golang
writer, err := rollingwriter.NewWriterFromConfig(&config)
if err != nil {
panic(err)
}writer.Write([]byte("hello, world"))
```
Want more? View `demo` for more details.Any suggestion or new feature inneed, please [put up an issue](https://github.com/arthurkiller/rollingWriter/issues/new)