Skip to content

cevin/reopen-writer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ReWriter

A Go package that provides a file writer with support for reopening the underlying file, ideal for handling log rotation (e.g., with logrotate).

Features

  • Implements io.Writer interface for seamless integration
  • Thread-safe operations with mutex protection
  • Explicit ReOpen() method to refresh file descriptor
  • Tracks last file open time
  • Proper resource cleanup with Close()

Usage

package main

import (
	"os"

	"github.com/cevin/reopen-writer"
)

func main() {

	writer, _ := rewriter.NewReopenWriter("dest.log")

	defer writer.Close()

	writer.Write([]byte("demo"))

	os.Rename("dest.log", "dest.log.1")

	writer.ReOpen()

	writer.Write([]byte("demo2"))
}
...

    ch := make(chan os.Signal, 1)
    signal.Notify(ch, syscall.SIGUSR1)
    for {
        select {
            case <-ch:
                writer.ReOpen()
        }
    }
...
# kill -USR1 $(cat /run/x.pid)

About

a minimal Writer wrapper adapted for logrotate behavior

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages