code: func (l *LoggerBase) Add(vars ...interface{}) Logger {
  	if len(vars)%2 == 1 {
  		panic("bad number of arguments")
  	}
  
  	ctx := map[string]interface{}{}
  
  	for k, v := range l.ctx {
  		ctx[k] = v
  	}
  
  	num := len(vars) / 2
  	for i := 0; i < num; i++ {
  		name, ok := vars[i*2].(string)
  		if !ok {
  			panic("non-string variable name")
  		}
  		ctx[name] = vars[i*2+1]
  	}
  
  	return &LoggerBase{conf: l.conf, log: l.log, ctx: ctx}
  }
docs: // Add returns a new logger with added context variables. This function takes
  // alternated key-value pairs (name1, val1, name1, val2, ...). The keys must be
  // strings, but the values can be of any type.