package umlog import ( "AngkorWalletScanning/ummessage" "fmt" "log" "os" "runtime" "strconv" "strings" ) type Logger struct { Debug *log.Logger Info *log.Logger Warn *log.Logger Error *log.Logger } var ( logFile *os.File umLogger Logger log_level string = "" ) // 패키지 외부에서 사용하기 위해서는 첫문자는 대문자로... func Init(logfile string, messageToken string, messageId string) error { var err error logFile, err = os.OpenFile(logfile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o666) if err != nil { return err } umLogger.Debug = log.New(logFile, "[DEBUG] ", log.Ldate|log.Ltime) umLogger.Info = log.New(logFile, "[INFO] ", log.Ldate|log.Ltime) umLogger.Warn = log.New(logFile, "[WARN] ", log.Ldate|log.Ltime) umLogger.Error = log.New(logFile, "[ERROR] ", log.Ldate|log.Ltime) ummessage.InitTelegramBot(messageToken, messageId) return nil } func Close() { logFile.Close() } func SetLevel(level string) { switch level { case "I": log_level = "info" case "W": log_level = "warn" case "E": log_level = "error" default: log_level = "debug" } } func debugInfo() (string, string, string) { funcname, filename, line, _ := runtime.Caller(2) functionname := runtime.FuncForPC(funcname).Name() filenames := strings.Split(filename, "/") return filenames[len(filenames)-1], functionname, strconv.Itoa(line) } func Message(title string, body string) { chatId := int64(-5029236432) token := "7108014537:AAHU7299mCzHsBJp1KmPMp7tZEGfGsQ-ffM" ummessage.SendMessageDirect(chatId, token, title, body) } func Error(format string, args ...interface{}) { if log_level == "error" || log_level == "warn" || log_level == "info" || log_level == "debug" { filename, function, line := debugInfo() message := fmt.Sprintf(format, args...) umLogger.Error.Println("[" + filename + "][" + function + "][" + line + "] " + message) ummessage.SendMessage("["+filename+"]["+function+"]["+line+"]", message) } } func Warn(format string, args ...interface{}) { if log_level == "warn" || log_level == "info" || log_level == "debug" { filename, _, line := debugInfo() message := fmt.Sprintf(format, args...) umLogger.Warn.Println("[" + filename + "][" + line + "] " + message) } } func Info(format string, args ...interface{}) { if log_level == "info" || log_level == "debug" { filename, _, line := debugInfo() message := fmt.Sprintf(format, args...) umLogger.Info.Println("[" + filename + "][" + line + "] " + message) } } func Debug(format string, args ...interface{}) { if log_level == "debug" { filename, function, line := debugInfo() message := fmt.Sprintf(format, args...) umLogger.Debug.Println("[" + filename + "][" + function + "][" + line + "] " + message) } }