code: func (sh *SlackrusHook) Fire(e *logrus.Entry) error {
  	if sh.Disabled {
  		return nil
  	}
  	
  	color := ""
  	switch e.Level {
  	case logrus.DebugLevel:
  		color = "#9B30FF"
  	case logrus.InfoLevel:
  		color = "good"
  	case logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel:
  		color = "danger"
  	default:
  		color = "warning"
  	}
  
  	msg := &slack.Message{
  		Username:  sh.Username,
  		Channel:   sh.Channel,
  		IconEmoji: sh.IconEmoji,
  		IconUrl:   sh.IconURL,
  	}
  
  	attach := msg.NewAttachment()
  
  	newEntry := sh.newEntry(e)
  	// If there are fields we need to render them at attachments
  	if len(newEntry.Data) > 0 {
  
  		// Add a header above field data
  		attach.Text = "Message fields"
  
  		for k, v := range newEntry.Data {
  			slackField := &slack.Field{}
  
  			slackField.Title = k
  			slackField.Value = fmt.Sprint(v)
  			// If the field is <= 20 then we'll set it to short
  			if len(slackField.Value) <= 20 {
  				slackField.Short = true
  			}
  
  			attach.AddField(slackField)
  		}
  		attach.Pretext = newEntry.Message
  	} else {
  		attach.Text = newEntry.Message
  	}
  	attach.Fallback = newEntry.Message
  	attach.Color = color
  
  	c := slack.NewClient(sh.HookURL)
  
  	if sh.Asynchronous {
  		go c.SendMessage(msg)
  		return nil
  	}
  
  	return c.SendMessage(msg)
  }
docs: // Fire -  Sent event to slack