35 lines
583 B
Go
35 lines
583 B
Go
package logfrog
|
|
|
|
type LogProcessor interface {
|
|
Close() error
|
|
Ref()
|
|
Unref() error
|
|
Process(*LogRecord) *LogRecord
|
|
}
|
|
|
|
type LogProcessorFn func(*LogRecord) *LogRecord
|
|
|
|
type BaseLogProcessor struct {
|
|
LogProcessor
|
|
refs int
|
|
}
|
|
|
|
func NewBaseLogProcessor() *BaseLogProcessor {
|
|
return &BaseLogProcessor{ refs: 0 }
|
|
}
|
|
|
|
func (b *BaseLogProcessor) Close() error {
|
|
return nil
|
|
}
|
|
|
|
func (b *BaseLogProcessor) Ref() {
|
|
b.refs++
|
|
}
|
|
|
|
func (b *BaseLogProcessor) Unref() error {
|
|
b.refs--
|
|
if b.refs <= 0 {
|
|
return b.LogProcessor.Close()
|
|
}
|
|
return nil
|
|
} |