log_adapter.go
func (la *LogAdapter) LogWithTime(level LogLevel, ts time.Time, attrs *Attrs, msg string, a ...interface{}) error {
	if la.logLevel != nil && level > *la.logLevel {
		return nil
	}

	mergedAttrs := la.attrs.clone()
	mergedAttrs.MergeAttrs(attrs)
	return la.base.LogWithTime(level, ts, mergedAttrs, msg, a...)
}
func (la *LogAdapter) LogWithTime(level LogLevel, ts time.Time, attrs *Attrs, msg string, a ...interface{}) error {
	if la.logLevel != nil && level > *la.logLevel {
		return nil
	}

	mergedAttrs := la.attrs.clone()
	mergedAttrs.MergeAttrs(attrs)
	return la.base.LogWithTime(level, ts, mergedAttrs, msg, a...)
}
// LogWithTime will log a message at the provided level to all loggers added
// to the Base associated with this LogAdapter. It is similar to Log except
// the timestamp will be set to the value of ts.