code: func NewAsyncGraylogHook(addr string, extra map[string]interface{}) *GraylogHook {
  	g, err := NewWriter(addr)
  	if err != nil {
  		logrus.WithError(err).Error("Can't create Gelf logger")
  	}
  
  	host, err := os.Hostname()
  	if err != nil {
  		host = "localhost"
  	}
  
  	hook := &GraylogHook{
  		Host:       host,
  		Extra:      extra,
  		Level:      logrus.DebugLevel,
  		gelfLogger: g,
  		buf:        make(chan graylogEntry, BufSize),
  	}
  	go hook.fire() // Log in background
  	return hook
  }
docs: // NewAsyncGraylogHook creates a hook to be added to an instance of logger.
  // The hook created will be asynchronous, and it's the responsibility of the user to call the Flush method
  // before exiting to empty the log queue.