CHANGELOG.md 2.5 KB

Release History

v1.3.0 (dev)

Major features

  • Introduce Filter interface #19. It acts similar to Reducer, but it is about limiting chain entries.
    • Has Filter(*Entry) *Entry method to check is entry meets filter condition
    • Implements Reducer interface too, to be used in chains
  • Datetime filter #19. Its based on this PR #11 by @pshevtsov
  • Introduce StringParser #24 by @pshevtsov

Minor features

  • Run test for go version up to 1.5
  • Linting fixes #13, #14 (thanks to @pshevtsov)
  • More examples, espetially for reducers #17
  • Use goconvey for tests

Bugfixes

  • Fixed Reader examples #21
  • Long lines reading #23 by @pshevtsov
  • Fix nginx conf parsing, deal with commented lines #25 by @jack1582

v1.2.2 (2014-11-05)

Bugfixes

  • Parsing last value without quotes was fixed, #9
  • Tested for Go v1.3

v1.2.1 (2014-06-21)

Bugfixes

  • Fix issue #6 which causes parser to crash if some value in a log line was empty
  • Fix TestGroupByReducer #4, it was random crashing, because we could not expect the order of entries readed from an output channel

v1.2.0 (2014-03-30)

Features and Improvements

  • The aggregation reducers such as Avg, Sum and Count was introduces along with Chain and GroupBy reducers.
  • Entry got some new methods
    • Getters Field(name string), FloatField(name string)
    • Setters SetField(name string, value string), SetFloatField(name string, value float64), SetUintField(name string, uint64)
    • Utility methods Merge(entry *Entry), FieldsHash(fields []string), Partial(fields []string)

Backward incompatibilities

  • All functions deals with *Entry instead of Entry
  • MapReduce returns chan *Entry instead of chan interface{} and all reducers accept output channel as chan *Entry
  • Entry is a struct, not a map[string]string anymore and has two constructors NewEntry that accepts Fields and NewEmptyEntry
  • Entry.Get was renamed to Entry.Field

v1.1.0 (2013-11-20)

Major feature

Implement function MapReduce to parse log file in asynchronous manner for speed improvement. Reader.Read and constructors signatures and behaviour still the same.

v1.0.0 (2013-11-11)

Log reader type Reader with the following constructors

  • func NewReader(logFile io.Reader, format string) *Reader
  • func NewNginxReader(logFile io.Reader, nginxConf io.Reader, formatName string) (reader *Reader, err error)

And one interface method

  • func (r *Reader) Read() (record Entry, err error)