func NewDevelopment(options ...Option) (*Logger, error) {
	return NewDevelopmentConfig().Build(options...)
}
NewDevelopment builds a development Logger that writes DebugLevel and above
logs to standard error in a human-friendly format.

It's a shortcut for NewDevelopmentConfig().Build(...Option).
package zap
import (
	"fmt"
	"io/ioutil"
	"os"
	"runtime"
	"strings"
	"time"
	"go.uber.org/zap/zapcore"
)
type Logger struct {
	core zapcore.Core
	development bool
	name        string
	errorOutput zapcore.WriteSyncer
	addCaller bool
	addStack  zapcore.LevelEnabler
	callerSkip int
}
func New(core zapcore.Core, options ...Option) *Logger {
	if core == nil {
		return NewNop()
	}
	log := &Logger{
		core:        core,
		errorOutput: zapcore.Lock(os.Stderr),
		addStack:    zapcore.FatalLevel + 1,
	}
	return log.WithOptions(options...)
}
func NewNop() *Logger {
	return &Logger{
		core:        zapcore.NewNopCore(),
		errorOutput: zapcore.AddSync(ioutil.Discard),
		addStack:    zapcore.FatalLevel + 1,
	}
}
func NewProduction(options ...Option) (*Logger, error) {
	return NewProductionConfig().Build(options...)
}