func New(opts *LoggerOptions) Logger {
	return newLogger(opts)
}
New returns a configured logger.
package hclog
import (
	"bytes"
	"encoding"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"log"
	"os"
	"reflect"
	"regexp"
	"runtime"
	"sort"
	"strconv"
	"strings"
	"sync"
	"sync/atomic"
	"time"
	"github.com/fatih/color"
)
const TimeFormat = "2006-01-02T15:04:05.000Z0700"
const errJsonUnsupportedTypeMsg = "logging contained values that don't serialize to json"
var (
	_levelToBracket = map[Level]string{
		Debug: "[DEBUG]",
		Trace: "[TRACE]",
		Info:  "[INFO] ",
		Warn:  "[WARN] ",
		Error: "[ERROR]",
	}
	_levelToColor = map[Level]*color.Color{
		Debug: color.New(color.FgHiWhite),
		Trace: color.New(color.FgHiGreen),
		Info:  color.New(color.FgHiBlue),
		Warn:  color.New(color.FgHiYellow),
		Error: color.New(color.FgHiRed),
	}
)
var _ Logger = &intLogger{}
type intLogger struct {
	json       bool
	caller     bool
	name       string
	timeFormat string
	mutex  Locker
	writer *writer
	level  *int32
	implied []interface{}
	exclude func(level Level, msg string, args ...interface{}) bool
}