v1.0.4 - init version

This commit is contained in:
19 changed files with 2049 additions and 0 deletions

70
internal/logger/logger.go Normal file
View File

@@ -0,0 +1,70 @@
package logger
import (
"fmt"
"log"
"os"
"runtime"
"strings"
)
var (
debugMode bool
logger *log.Logger
)
func init() {
mode := os.Getenv("GO_SPEECH_MODE")
debugMode = (mode != "release")
logger = log.New(os.Stdout, "", log.LstdFlags|log.Lmicroseconds)
}
// IsDebug возвращает true, если включен режим отладки
func IsDebug() bool {
return debugMode
}
// Debug логирует сообщение только в режиме отладки
func Debug(format string, v ...interface{}) {
if debugMode {
logMessage("DEBUG", format, v...)
}
}
// Info логирует информационное сообщение
func Info(format string, v ...interface{}) {
logMessage("INFO", format, v...)
}
// Error логирует сообщение об ошибке
func Error(format string, v ...interface{}) {
logMessage("ERROR", format, v...)
}
// Warn логирует предупреждение
func Warn(format string, v ...interface{}) {
logMessage("WARN", format, v...)
}
// DebugWithContext логирует сообщение с контекстом (файл и строка)
func DebugWithContext(format string, v ...interface{}) {
if debugMode {
_, file, line, ok := runtime.Caller(1)
if ok {
file = file[strings.LastIndex(file, "/")+1:]
logMessage("DEBUG", fmt.Sprintf("[%s:%d] %s", file, line, format), v...)
} else {
logMessage("DEBUG", format, v...)
}
}
}
// logMessage форматирует и выводит сообщение
func logMessage(level, format string, v ...interface{}) {
message := format
if len(v) > 0 {
message = fmt.Sprintf(format, v...)
}
logger.Printf("[%s] %s", level, message)
}