func Aux(f string, a ...interface{}) error {
	return Global.Aux(f, a...)
}
Aux write unskippable message (for separators/headers)
package log
import (
	"bufio"
	"errors"
	"fmt"
	"io"
	"os"
	"strings"
	"sync"
	"time"
	"pkg.re/essentialkaos/ek.v12/fmtc"
)
const (
	DEBUG uint8 = 0   
	INFO        = 1   
	WARN        = 2   
	ERROR       = 3   
	CRIT        = 4   
	AUX         = 99  
)
type Logger struct {
	PrefixDebug bool  
	PrefixInfo  bool  
	PrefixWarn  bool  
	PrefixError bool  
	PrefixCrit  bool  
	UseColors bool  
	file     string
	fd       *os.File
	w        *bufio.Writer
	mu       *sync.Mutex
	minLevel uint8
	perms    os.FileMode
	useBufIO bool
}
var Global = &Logger{
	PrefixWarn:  true,
	PrefixError: true,
	PrefixCrit:  true,
	minLevel: INFO,
	mu:       &sync.Mutex{},
}
var PrefixMap = map[uint8]string{
	DEBUG: "[DEBUG]",
	INFO:  "[INFO]",
	WARN:  "[WARNING]",
	ERROR: "[ERROR]",
	CRIT:  "[CRITICAL]",
}
var Colors = map[uint8]string{
	DEBUG: "{s-}",
	INFO:  "",
	WARN:  "{y}",
	ERROR: "{r}",
	CRIT:  "{m}",
}
var TimeFormat = "2006/01/02 15:04:05.000"
var (
	ErrLoggerIsNil = errors.New("Logger is nil or not created properly")
	ErrUnexpectedLevel = errors.New("Unexpected level type")
	ErrOutputNotSet = errors.New("Output file is not set")
)
var logLevelsNames = map[string]uint8{
	"debug":    0,
	"info":     1,
	"warn":     2,
	"warning":  2,
	"error":    3,
	"crit":     4,
	"critical": 4,
}
func New(file string, perms os.FileMode) (*Logger, error) {
	logger := &Logger{
		PrefixWarn:  true,
		PrefixCrit:  true,
		PrefixError: true,
		minLevel: INFO,
		mu:       &sync.Mutex{},
	}
	err := logger.Set(file, perms)
	if err != nil {
		return nil, err
	}
	return logger, nil
}
func Reopen() error {
	return Global.Reopen()
}
func MinLevel(level interface{}) error {
	return Global.MinLevel(level)
}
func Set(file string, perms os.FileMode) error {
	return Global.Set(file, perms)
}
func EnableBufIO(interval time.Duration) {
	Global.EnableBufIO(interval)
}
func Flush() error {
	return Global.Flush()
}
func Print(level uint8, f string, a ...interface{}) error {
	return Global.Print(level, f, a...)
}
func Debug(f string, a ...interface{}) error {
	return Global.Debug(f, a...)
}
func Info(f string, a ...interface{}) error {
	return Global.Info(f, a...)
}
func Warn(f string, a ...interface{}) error {
	return Global.Warn(f, a...)
}
func Error(f string, a ...interface{}) error {
	return Global.Error(f, a...)
}
func Crit(f string, a ...interface{}) error {
	return Global.Crit(f, a...)
}