...

Source file src/github.com/sirupsen/logrus/buffer_pool.go

Documentation: github.com/sirupsen/logrus

     1  package logrus
     2  
     3  import (
     4  	"bytes"
     5  	"sync"
     6  )
     7  
     8  var (
     9  	bufferPool BufferPool
    10  )
    11  
    12  type BufferPool interface {
    13  	Put(*bytes.Buffer)
    14  	Get() *bytes.Buffer
    15  }
    16  
    17  type defaultPool struct {
    18  	pool *sync.Pool
    19  }
    20  
    21  func (p *defaultPool) Put(buf *bytes.Buffer) {
    22  	p.pool.Put(buf)
    23  }
    24  
    25  func (p *defaultPool) Get() *bytes.Buffer {
    26  	return p.pool.Get().(*bytes.Buffer)
    27  }
    28  
    29  // SetBufferPool allows to replace the default logrus buffer pool
    30  // to better meets the specific needs of an application.
    31  func SetBufferPool(bp BufferPool) {
    32  	bufferPool = bp
    33  }
    34  
    35  func init() {
    36  	SetBufferPool(&defaultPool{
    37  		pool: &sync.Pool{
    38  			New: func() interface{} {
    39  				return new(bytes.Buffer)
    40  			},
    41  		},
    42  	})
    43  }
    44  

View as plain text