49 lines
926 B
Go
49 lines
926 B
Go
package evelogs
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
)
|
|
|
|
type LogFile struct {
|
|
Path string
|
|
}
|
|
|
|
// create a lofFile instance, if it's a file.
|
|
func NewLogFile(path string) (*LogFile, error) {
|
|
lf := &LogFile{Path: path}
|
|
exists := lf.FileExists()
|
|
if !exists {
|
|
return nil, fmt.Errorf("File %s not found or is directory", lf.Path)
|
|
}
|
|
return lf, nil
|
|
}
|
|
|
|
func (lf *LogFile) FileExists() bool {
|
|
info, err := os.Stat(lf.Path)
|
|
if os.IsNotExist(err) {
|
|
return false
|
|
}
|
|
return !info.IsDir()
|
|
}
|
|
|
|
func (lf *LogFile) TailFile() error {
|
|
//lets start a goroutine to tail the file here
|
|
return nil
|
|
}
|
|
|
|
//create logFile instances from a list of paths
|
|
func PathsToLogFiles(paths []string) ([]*LogFile, error) {
|
|
var logFiles []*LogFile
|
|
for _, f := range paths {
|
|
nLogFile, err := NewLogFile(f)
|
|
if err != nil {
|
|
log.Printf("Error with %s: %s", f, err)
|
|
return nil, err
|
|
}
|
|
logFiles = append(logFiles, nLogFile)
|
|
}
|
|
return logFiles, nil
|
|
}
|