code: func NewLogger(outputLogger log.Logger) *Logger {
  	// We will never halt the progress of a log emitter. If log output takes too
  	// long will start dropping log lines by using a ring buffer.
  	swapLogger := new(log.SwapLogger)
  	swapLogger.Swap(outputLogger)
  	return &Logger{
  		Output: swapLogger,
  		// logging contexts
  		Info: log.With(swapLogger,
  			structure.ChannelKey, structure.InfoChannelName,
  		),
  		Trace: log.With(swapLogger,
  			structure.ChannelKey, structure.TraceChannelName,
  		),
  	}
  }
docs: // Create an InfoTraceLogger by passing the initial outputLogger.