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) )
var ( ErrStop = errors.New("tail should now stop") )
func OpenFile(name string) (file *os.File, err error)
Config is used to specify how a file must be tailed.
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) RateLimiter *ratelimiter.LeakyBucket // Generic IO Follow bool // Continue looking for new lines (tail -f) MaxLineSize int // If non-zero, split longer lines into multiple lines // Logger, when nil, is set to tail.DefaultLogger // To disable logging: set field to tail.DiscardingLogger Logger logger }
type Line struct { Text string Time time.Time Err error // Error from tail }
func NewLine(text string) *Line
NewLine returns a Line with present time.
SeekInfo represents arguments to `os.Seek`
type SeekInfo struct { Offset int64 Whence int // os.SEEK_* }
type Tail struct { Filename string Lines chan *Line Config tomb.Tomb // provides: Done, Kill, Dying // contains filtered or unexported fields }
func TailFile(filename string, config Config) (*Tail, 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 *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 *Tail) Stop() error
Stop stops the tailing activity.
func (tail *Tail) StopAtEOF() error
StopAtEOF stops tailing as soon as the end of the file is reached.
func (tail *Tail) Tell() (offset int64, err error)
Return the file's current position, like stdio's ftell(). But this value is not very accurate. it may readed one line in the chan(tail.Lines), so it may lost one line.