go-full-stack/lib/logger/database.go
Mark Bailey 66d92df040 WIP: fix most broken stuff for now
+ still need to figure out why some routes aren't working
2024-11-24 07:06:22 -05:00

76 lines
1.4 KiB
Go

package logger
import (
"fmt"
pterror "git.markbailey.dev/cerbervs/ptpp/lib/error"
"git.markbailey.dev/cerbervs/ptpp/util"
"log"
"os"
"sync"
)
var (
dbLog *Log
dbLogFile *os.File
dbLoggerLock = &sync.Mutex{}
dbLogFileLock = &sync.Mutex{}
)
type DBLogger struct{}
func NewDBLogger() *DBLogger {
return &DBLogger{}
}
func (l DBLogger) GetLogger() *Log {
if dbLog == nil {
dbLoggerLock.Lock()
defer dbLoggerLock.Unlock()
logFile := l.getLogFile()
dbLog = &Log{
Error: log.New(logFile, "ERROR:\t", log.Ldate|log.Ltime),
Warn: log.New(logFile, "WARN:\t", log.Ldate|log.Ltime),
Info: log.New(logFile, "INFO:\t", log.Ldate|log.Ltime),
}
}
return dbLog
}
func (l DBLogger) getLogFile() *os.File {
if dbLogFile == nil {
dbLogFileLock.Lock()
defer dbLogFileLock.Unlock()
absPath := util.GetFullyQualifiedPath("/log")
generalLog, err := os.OpenFile(absPath+"/db-log.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
fmt.Println("Error opening file:", err)
os.Exit(1)
}
dbLogFile = generalLog
}
return dbLogFile
}
func (l DBLogger) Error(e error) {
l.GetLogger().Error.Println(e)
}
func (l DBLogger) Warn(w string) {
l.GetLogger().Warn.Println(w)
}
func (l DBLogger) Info(i string) {
l.GetLogger().Info.Println(i)
}
func (l DBLogger) Wrap(e error, context string) error {
return pterror.Wrap(e, context)
}