code: func copyEntry(e *logrus.Entry, fields logrus.Fields) *logrus.Entry {
  	ne := entryPool.Get().(*logrus.Entry)
  	ne.Message = e.Message
  	ne.Level = e.Level
  	ne.Time = e.Time
  	ne.Data = logrus.Fields{}
  	for k, v := range fields {
  		ne.Data[k] = v
  	}
  	for k, v := range e.Data {
  		ne.Data[k] = v
  	}
  	return ne
  }
docs: // copyEntry copies the entry `e` to a new entry and then adds all the fields in `fields` that are missing in the new entry data.
  // It uses `entryPool` to re-use allocated entries.