123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- package gonx
- import (
- "io"
- )
- type Reader struct {
- file io.Reader
- parser StringParser
- entries chan *Entry
- }
- func NewReader(logFile io.Reader, format string) *Reader {
- return NewParserReader(logFile, NewParser(format))
- }
- func NewParserReader(logFile io.Reader, parser StringParser) *Reader {
- return &Reader{
- file: logFile,
- parser: parser,
- }
- }
- func NewNginxReader(logFile io.Reader, nginxConf io.Reader, formatName string) (reader *Reader, err error) {
- parser, err := NewNginxParser(nginxConf, formatName)
- if err != nil {
- return nil, err
- }
- reader = &Reader{
- file: logFile,
- parser: parser,
- }
- return
- }
- func (r *Reader) Read() (entry *Entry, err error) {
- if r.entries == nil {
- r.entries = MapReduce(r.file, r.parser, new(ReadAll))
- }
- entry, ok := <-r.entries
- if !ok {
- err = io.EOF
- }
- return
- }
|