func NewDefault(handler Handler) *Logger {
	return New(handler, Ltime|Lfile|Llevel)
}
new a default logger with specified handler and flag: Ltime|Lfile|Llevel
package log
import (
	"fmt"
	"os"
	"runtime"
	"strconv"
	"strings"
	"sync"
	"sync/atomic"
	"time"
)
const (
	LevelTrace = iota
	LevelDebug
	LevelInfo
	LevelWarn
	LevelError
	LevelFatal
)
const (
	Ltime  = 1 << iota  
	Lfile               
	Llevel              
)
var LevelName [6]string = [6]string{"Trace", "Debug", "Info", "Warn", "Error", "Fatal"}
const TimeFormat = "2006/01/02 15:04:05"
const maxBufPoolSize = 16
type atomicInt32 int32
func (i *atomicInt32) Set(n int) {
	atomic.StoreInt32((*int32)(i), int32(n))
}
func (i *atomicInt32) Get() int {
	return int(atomic.LoadInt32((*int32)(i)))
}
type Logger struct {
	level atomicInt32
	flag  int
	hMutex  sync.Mutex
	handler Handler
	bufMutex sync.Mutex
	bufs     [][]byte
	closed atomicInt32
}
func New(handler Handler, flag int) *Logger {
	var l = new(Logger)
	l.level.Set(LevelInfo)
	l.handler = handler
	l.flag = flag
	l.closed.Set(0)
	l.bufs = make([][]byte, 0, 16)
	return l
}