tail

package module
v1.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 26, 2022 License: MIT Imports: 17 Imported by: 0

README

Build Status Build status

Go package for tail-ing files

A Go package striving to emulate the features of the BSD tail program.

t, err := tail.TailFile("/var/log/nginx.log", tail.Config{Follow: true})
for line := range t.Lines {
    fmt.Println(line.Text)
}

See API documentation.

Log rotation

Tail comes with full support for truncation/move detection as it is designed to work with log rotation tools.

Installing

go get github.com/nagae-memooff/tail/...

Windows support

This package needs assistance for full Windows support.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// DefaultLogger is used when Config.Logger == nil
	DefaultLogger = log.New(os.Stderr, "", log.LstdFlags)
	// DiscardingLogger can be used to disable logging output
	DiscardingLogger = log.New(ioutil.Discard, "", 0)
)
View Source
var (
	ErrStop = errors.New("tail should now stop")
)

Functions

func CopyBytesToString added in v1.1.0

func CopyBytesToString(src []byte) (s string)

func OpenFile

func OpenFile(name string) (file *os.File, err error)

Types

type Config

type Config struct {
	// File-specifc
	Location  *SeekInfo // Seek to this location before tailing
	ReOpen    bool      // Reopen recreated files (tail -F)
	MustExist bool      // Fail early if the file does not exist
	Poll      bool      // Poll for file changes instead of using inotify
	Pipe      bool      // Is a named pipe (mkfifo)

	// Generic IO
	ReadLimit          int
	Follow             bool  // Continue looking for new lines (tail -f)
	MaxLineSize        int64 // If non-zero, split longer lines into multiple lines
	LinesChannelLength int

	// Logger, when nil, is set to tail.DefaultLogger
	// To disable logging: set field to tail.DiscardingLogger
	Regex  string
	Logger logger

	StartWithOrder uint64
}

Config is used to specify how a file must be tailed.

type Line

type Line struct {
	Order uint64
	Text  string
	Err   error // Error from tail
}

type SeekInfo

type SeekInfo struct {
	Offset int64
	Whence int // os.SEEK_*
}

SeekInfo represents arguments to `os.Seek`

type Tail

type Tail struct {
	Filename string
	Lines    chan *Line

	Config

	tomb.Tomb // provides: Done, Kill, Dying
	// contains filtered or unexported fields
}

func TailFile

func TailFile(filename string, config Config) (t *Tail, err error)

TailFile begins tailing the file. Output stream is made available via the `Tail.Lines` channel. To handle errors during tailing, invoke the `Wait` or `Err` method after finishing reading from the `Lines` channel.

func (*Tail) AddLineBytes added in v1.1.0

func (tail *Tail) AddLineBytes(value int64)

func (*Tail) Cleanup

func (tail *Tail) Cleanup()

Cleanup removes inotify watches added by the tail package. This function is meant to be invoked from a process's exit handler. Linux kernel may not automatically remove inotify watches after the process exits.

func (*Tail) NewLine added in v1.1.0

func (tail *Tail) NewLine(text string) *Line

NewLine returns a Line with present time.

func (*Tail) Offset added in v1.1.0

func (tail *Tail) Offset() (offset int64)

func (*Tail) Order added in v1.1.0

func (tail *Tail) Order() (order uint64)

func (*Tail) Stop

func (tail *Tail) Stop() error

Stop stops the tailing activity.

func (*Tail) StopAtEOF

func (tail *Tail) StopAtEOF() error

StopAtEOF stops tailing as soon as the end of the file is reached.

func (*Tail) WaitIfOutOfMemory added in v1.1.0

func (tail *Tail) WaitIfOutOfMemory() bool

不再等待

Directories

Path Synopsis
cmd
Package ratelimiter implements the Leaky Bucket ratelimiting algorithm with memcached and in-memory backends.
Package ratelimiter implements the Leaky Bucket ratelimiting algorithm with memcached and in-memory backends.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL