code: func NewUDPHook(opts ...UDPOptionSetter) (*UDPHook, error) {
  	f := &UDPHook{}
  	for _, o := range opts {
  		o(f)
  	}
  	if f.Clock == nil {
  		f.Clock = clockwork.NewRealClock()
  	}
  	if f.clientNet == "" {
  		f.clientNet = UDPDefaultNet
  	}
  	if f.clientAddr == "" {
  		f.clientAddr = UDPDefaultAddr
  	}
  	addr, err := net.ResolveUDPAddr(f.clientNet, f.clientAddr)
  	if err != nil {
  		return nil, Wrap(err)
  	}
  	conn, err := net.ListenPacket("udp", ":0")
  	if err != nil {
  		return nil, Wrap(err)
  	}
  	f.addr = addr
  	f.conn = conn.(*net.UDPConn)
  	return f, nil
  }
docs: // NewUDPHook returns logrus-compatible hook that sends data to UDP socket