55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
// /futriis/pkg/utils/logger.go
|
|
// Пакет utils предоставляет функции для логирования
|
|
|
|
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"time"
|
|
)
|
|
|
|
// Logger представляет структуру для логирования
|
|
type Logger struct {
|
|
file *os.File
|
|
}
|
|
|
|
var loggerInstance *Logger
|
|
|
|
// InitLogger инициализирует логгер
|
|
func InitLogger(logFile string) error {
|
|
file, err := os.OpenFile(logFile, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
loggerInstance = &Logger{
|
|
file: file,
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// GetLogger возвращает экземпляр логгера
|
|
func GetLogger() *Logger {
|
|
return loggerInstance
|
|
}
|
|
|
|
// Log записывает сообщение в лог
|
|
func (l *Logger) Log(level, message string) {
|
|
if l == nil || l.file == nil {
|
|
return
|
|
}
|
|
|
|
timestamp := time.Now().Format("2006-01-02 15:04:05")
|
|
logLine := fmt.Sprintf("[%s] %s: %s\n", timestamp, level, message)
|
|
l.file.WriteString(logLine)
|
|
}
|
|
|
|
// Close закрывает файл лога
|
|
func (l *Logger) Close() {
|
|
if l != nil && l.file != nil {
|
|
l.file.Close()
|
|
}
|
|
}
|