go-ayo/common을 gocommon으로 분리
This commit is contained in:
106
logger/logger.go
Normal file
106
logger/logger.go
Normal file
@ -0,0 +1,106 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
var stdlogger *log.Logger
|
||||
var errlogger *log.Logger
|
||||
|
||||
func init() {
|
||||
binpath, _ := os.Executable()
|
||||
binname := path.Base(strings.ReplaceAll(binpath, "\\", "/"))
|
||||
|
||||
logpath := os.Getenv("AYO_LOGGER_FILE_PATH")
|
||||
|
||||
if len(logpath) == 0 {
|
||||
stdlogger = log.New(os.Stdout, "", log.LstdFlags)
|
||||
errlogger = log.New(os.Stderr, "", log.LstdFlags)
|
||||
} else {
|
||||
ext := path.Ext(binname)
|
||||
if len(ext) > 0 {
|
||||
binname = binname[:len(binname)-len(ext)]
|
||||
}
|
||||
|
||||
if _, err := os.Stat(logpath); os.IsNotExist(err) {
|
||||
os.Mkdir("logs", 0777)
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
logFile, err := os.Create(fmt.Sprintf("%s/%s_%s.log", logpath, binname, now.Format("2006-01-02T15-04-05")))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
stdlogger = log.New(io.MultiWriter(os.Stdout, logFile), "", log.LstdFlags)
|
||||
if fi, err := os.Stat(binpath); err == nil {
|
||||
stdlogger.Println(fi.Name(), fi.ModTime())
|
||||
}
|
||||
|
||||
logFile, err = os.Create(fmt.Sprintf("%s/%s_%s.err", logpath, binname, now.Format("2006-01-02T15-04-05")))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
errlogger = log.New(io.MultiWriter(os.Stderr, logFile), "", log.LstdFlags)
|
||||
if fi, err := os.Stat(binpath); err == nil {
|
||||
errlogger.Println(fi.Name(), fi.ModTime())
|
||||
}
|
||||
}
|
||||
stdlogger.Println(binname)
|
||||
errlogger.Println(binname)
|
||||
}
|
||||
|
||||
func Println(v ...interface{}) {
|
||||
stdlogger.Output(2, fmt.Sprintln(v...))
|
||||
}
|
||||
|
||||
func Printf(format string, v ...interface{}) {
|
||||
stdlogger.Output(2, fmt.Sprintf(format, v...))
|
||||
}
|
||||
|
||||
func Error(v ...interface{}) {
|
||||
errlogger.Output(2, fmt.Sprintln(v...))
|
||||
errlogger.Output(2, string(debug.Stack()))
|
||||
}
|
||||
|
||||
func Errorf(format string, v ...interface{}) {
|
||||
errlogger.Output(2, fmt.Sprintf(format, v...))
|
||||
errlogger.Output(2, string(debug.Stack()))
|
||||
}
|
||||
|
||||
func Fatal(v ...interface{}) {
|
||||
errlogger.Output(2, fmt.Sprint(v...))
|
||||
errlogger.Output(2, string(debug.Stack()))
|
||||
os.Exit(1)
|
||||
}
|
||||
func Fatalln(v ...interface{}) {
|
||||
errlogger.Output(2, fmt.Sprintln(v...))
|
||||
errlogger.Output(2, string(debug.Stack()))
|
||||
os.Exit(1)
|
||||
}
|
||||
func Panic(v ...interface{}) {
|
||||
s := fmt.Sprint(v...)
|
||||
errlogger.Output(2, s)
|
||||
errlogger.Output(2, string(debug.Stack()))
|
||||
panic(s)
|
||||
}
|
||||
|
||||
func Panicf(format string, v ...interface{}) {
|
||||
s := fmt.Sprintf(format, v...)
|
||||
errlogger.Output(2, s)
|
||||
errlogger.Output(2, string(debug.Stack()))
|
||||
panic(s)
|
||||
}
|
||||
|
||||
func Panicln(v ...interface{}) {
|
||||
s := fmt.Sprintln(v...)
|
||||
errlogger.Output(2, s)
|
||||
errlogger.Output(2, string(debug.Stack()))
|
||||
panic(s)
|
||||
}
|
||||
Reference in New Issue
Block a user