code: func (elk *UDPHook) Fire(e *log.Entry) error {
  	// Make a copy to safely modify
  	entry := e.WithFields(nil)
  	if cursor := findFrame(); cursor != nil {
  		t := newTraceFromFrames(*cursor, nil)
  		entry.Data[FileField] = t.String()
  		entry.Data[FunctionField] = t.Func()
  	}
  	data, err := json.Marshal(Frame{
  		Time:    elk.Clock.Now().UTC(),
  		Type:    "trace",
  		Entry:   entry.Data,
  		Message: entry.Message,
  		Level:   entry.Level.String(),
  	})
  	if err != nil {
  		return Wrap(err)
  	}
  
  	conn, err := net.ListenPacket("udp", ":0")
  	if err != nil {
  		return Wrap(err)
  	}
  	defer conn.Close()
  
  	resolvedAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:5000")
  	if err != nil {
  		return Wrap(err)
  	}
  
  	_, err = (conn.(*net.UDPConn)).WriteToUDP(data, resolvedAddr)
  	return Wrap(err)
  
  }
docs: // Fire fires the event to the ELK beat