Files
miniws/logger.go
2025-08-03 15:04:16 +02:00

63 lines
1.6 KiB
Go

package main
import (
"fmt"
"log"
"os"
)
const (
FLAGS_LOG_OPEN int = os.O_APPEND | os.O_WRONLY | os.O_CREATE
FLAGS_CONFIG_OPEN int = os.O_RDONLY | os.O_CREATE
PERMS_LOG_OPEN os.FileMode = os.ModeType | os.ModePerm
PERMS_CONFIG_OPEN os.FileMode = os.ModeType | os.ModePerm
PERMS_MKDIR os.FileMode = os.ModeDir | os.ModePerm
)
type Logger struct {
logFolder string
}
func NewLogger(logFolder_ string) *Logger {
return &Logger{
logFolder: logFolder_,
}
}
// returns error != nil
func (l *Logger) logIfError(err error) bool {
if err != nil {
l.logError(err.Error())
return true
}
return false
}
func (l *Logger) logAccess(
remoteAddr, identifier, authuser, timestamp, request,
status, bytesSent, referer, user_agent string,
) {
out := fmt.Sprintf("%v %v %v [%v] \"%v\" %v %v \"%v\" \"%v\"\n",
remoteAddr, identifier, authuser, timestamp, request, status, bytesSent, referer, user_agent,
)
os.Mkdir(l.logFolder, os.ModeDir|os.ModePerm)
file, err := os.OpenFile(ensureSlashSuffix(l.logFolder)+FILENAME_ACCESSLOG, FLAGS_LOG_OPEN, PERMS_LOG_OPEN)
if err != nil {
log.Println("couldn't open log access file at", ensureSlashSuffix(l.logFolder)+FILENAME_ACCESSLOG)
}
defer file.Close()
file.WriteString(out)
}
func (l *Logger) logError(str string) {
os.Mkdir(l.logFolder, PERMS_MKDIR)
file, err := os.OpenFile(ensureSlashSuffix(l.logFolder)+FILENAME_ERRORLOG, FLAGS_LOG_OPEN, PERMS_LOG_OPEN)
if err != nil {
log.Println("couldn't open log error file at", ensureSlashSuffix(l.logFolder)+FILENAME_ERRORLOG)
}
defer file.Close()
file.WriteString(str + "\n")
}