Fix logging to use ISO standard date

main
Sean Hickey 2022-09-28 20:18:04 -07:00
parent 96a0f0e83c
commit c13ba6359e
3 changed files with 44 additions and 26 deletions

View File

@ -30,10 +30,5 @@ func Configure(filename string) (gosimpleconf.ConfigMap, error) {
flagMap := gosimpleconf.SetupFlagOverrides(configMap) flagMap := gosimpleconf.SetupFlagOverrides(configMap)
configMap = gosimpleconf.ParseFlags(configMap, flagMap) configMap = gosimpleconf.ParseFlags(configMap, flagMap)
err = SetupLogging(configMap)
if err != nil {
return nil, err
}
return configMap, nil return configMap, nil
} }

View File

@ -1,31 +1,43 @@
package config package config
import ( import (
"fmt"
"log" "log"
"os" "os"
"path/filepath" "time"
"gitea.wisellama.rocks/Wisellama/gosimpleconf"
) )
func SetupLogging(configMap gosimpleconf.ConfigMap) error { type logWriter struct {
writeToFile := gosimpleconf.Bool(configMap["log.writeToFile"]) writeToFile bool
logFile *os.File
}
func (w *logWriter) Write(bytes []byte) (int, error) {
t := time.Now().UTC().Format(time.RFC3339)
return fmt.Fprintf(w.logFile, "%v %v", t, string(bytes))
}
func (w *logWriter) Cleanup() {
defer w.logFile.Close()
}
func SetupLogging(writeToFile bool, logFilename string) (*logWriter, error) {
var err error
log.SetFlags(0)
logFile := os.Stdout
if writeToFile { if writeToFile {
logFile := configMap["log.file"] logFile, err = os.OpenFile(logFilename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
filename, err := filepath.Abs(logFile)
if err != nil { if err != nil {
return err return nil, err
} }
file, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
if err != nil {
return err
}
log.SetOutput(file)
} }
log.Printf("=== START %v ===", configMap["game.title"]) writer := &logWriter{
return nil writeToFile: writeToFile,
logFile: logFile,
}
log.SetOutput(writer)
return writer, nil
} }

19
main.go
View File

@ -3,7 +3,6 @@ package main
import ( import (
"fmt" "fmt"
"log" "log"
"os"
"runtime" "runtime"
"gitea.wisellama.rocks/Project-Ely/project-ely/config" "gitea.wisellama.rocks/Project-Ely/project-ely/config"
@ -13,15 +12,27 @@ import (
func main() { func main() {
var err error var err error
// Read configuration
configMap, err := config.Configure("game.conf") configMap, err := config.Configure("game.conf")
if err != nil { if err != nil {
log.Printf("error during configure: %v\n", err) log.Fatalf("error during configure: %v\n", err)
os.Exit(1)
} }
// Setup logging
writeToFile := gosimpleconf.Bool(configMap["log.writeToFile"])
logFilename := configMap["log.file"]
logWriter, err := config.SetupLogging(writeToFile, logFilename)
if err != nil {
log.Fatalf("error setting up logging: %v\n", err)
}
defer logWriter.Cleanup()
// Start everything
log.Printf("=== Starting %v", configMap["game.title"])
err = run(configMap) err = run(configMap)
if err != nil { if err != nil {
log.Fatal(err) log.Fatalf("error running: %v\n", err)
} }
} }