log/log.go
func (t *Target) Errorf(format string, v ...interface{}) {
	t.mut.RLock()
	defer t.mut.RUnlock()
	if t.logger != nil {
		t.logger.Errorf(format, v...)
		for _, item := range v {
			if _, hasStack := item.(withStack); hasStack {
				t.logger.Errorf("stack for error: %+v", item)
			}
		}
	}
}
func (t *Target) Errorf(format string, v ...interface{}) {
	t.mut.RLock()
	defer t.mut.RUnlock()
	if t.logger != nil {
		t.logger.Errorf(format, v...)
		for _, item := range v {
			if _, hasStack := item.(withStack); hasStack {
				t.logger.Errorf("stack for error: %+v", item)
			}
		}
	}
}
// Errorf writes the formatted string to the Target
// logger.