code: func (el *eventLogger) Event(ctx context.Context, event string, metadata ...Loggable) {
  
  	// short circuit if theres nothing to write to
  	if !writer.WriterGroup.Active() {
  		return
  	}
  
  	// Collect loggables for later logging
  	var loggables []Loggable
  
  	// get any existing metadata from the context
  	existing, err := MetadataFromContext(ctx)
  	if err != nil {
  		existing = Metadata{}
  	}
  	loggables = append(loggables, existing)
  
  	for _, datum := range metadata {
  		loggables = append(loggables, datum)
  	}
  
  	e := entry{
  		loggables: loggables,
  		system:    el.system,
  		event:     event,
  	}
  
  	accum := Metadata{}
  	for _, loggable := range e.loggables {
  		accum = DeepMerge(accum, loggable.Loggable())
  	}
  
  	// apply final attributes to reserved keys
  	// TODO accum["level"] = level
  	accum["event"] = e.event
  	accum["system"] = e.system
  	accum["time"] = FormatRFC3339(time.Now())
  
  	var buf bytes.Buffer
  	encoder := json.NewEncoder(&buf)
  	encoder.SetEscapeHTML(false)
  	err = encoder.Encode(accum)
  	if err != nil {
  		el.Errorf("ERROR FORMATTING EVENT ENTRY: %s", err)
  		return
  	}
  
  	writer.WriterGroup.Write(buf.Bytes())
  }
docs: // DEPRECATED use `Start`