https://github.com/tkuchiki/gologrotate
logrotate for golang
https://github.com/tkuchiki/gologrotate
Last synced: 2 months ago
JSON representation
logrotate for golang
- Host: GitHub
- URL: https://github.com/tkuchiki/gologrotate
- Owner: tkuchiki
- License: mit
- Created: 2015-10-02T05:46:56.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2015-10-02T06:03:25.000Z (over 9 years ago)
- Last Synced: 2025-01-25T09:11:07.360Z (4 months ago)
- Language: Go
- Size: 137 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# gologrotate
logrotate for golang# Example
## Code
```
package mainimport (
"bufio"
"fmt"
"log"
"os"
"os/signal"
"syscall"
"time"
"github.com/tkuchiki/gologrotate"
)func main() {
var writer *bufio.Writer
var err error
var f *os.Filelogpath := "/tmp/log"
f, err = os.OpenFile(logpath, os.O_WRONLY|os.O_CREATE, 0644)
writer = bufio.NewWriter(f)sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan,
syscall.SIGUSR1)
go func() {
for {
s := <-sigChan
switch s {
case syscall.SIGUSR1:
log.Println("Received SIGUSR1")
writer, err = gologrotate.Rotate(writer, f, logpath, "", os.O_WRONLY|os.O_CREATE, 0644)
}
}
}()i := 0
for {
_, _ = writer.Write([]byte(fmt.Sprintf("%d\n", i)))
writer.Flush()
i++
time.Sleep(10 * time.Millisecond)
}
}
```## Result
```
# Current date 2015-10-02
$ go build -o sample.go
$ ./sample &
$ kill -USR1 PID
$ ls /tmp/log*
/tmp/log /tmp/log-20151002$ tail -n 5 /tmp/log-20151002
713
714
715
716
717$ head -n 5 /tmp/log
718
719
720
721
722
```