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)
configMap = gosimpleconf.ParseFlags(configMap, flagMap)
err = SetupLogging(configMap)
if err != nil {
return nil, err
}
return configMap, nil
}

View File

@ -1,31 +1,43 @@
package config
import (
"fmt"
"log"
"os"
"path/filepath"
"gitea.wisellama.rocks/Wisellama/gosimpleconf"
"time"
)
func SetupLogging(configMap gosimpleconf.ConfigMap) error {
writeToFile := gosimpleconf.Bool(configMap["log.writeToFile"])
type logWriter struct {
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 {
logFile := configMap["log.file"]
filename, err := filepath.Abs(logFile)
logFile, err = os.OpenFile(logFilename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
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"])
return nil
writer := &logWriter{
writeToFile: writeToFile,
logFile: logFile,
}
log.SetOutput(writer)
return writer, nil
}

19
main.go
View File

@ -3,7 +3,6 @@ package main
import (
"fmt"
"log"
"os"
"runtime"
"gitea.wisellama.rocks/Project-Ely/project-ely/config"
@ -13,15 +12,27 @@ import (
func main() {
var err error
// Read configuration
configMap, err := config.Configure("game.conf")
if err != nil {
log.Printf("error during configure: %v\n", err)
os.Exit(1)
log.Fatalf("error during configure: %v\n", err)
}
// 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)
if err != nil {
log.Fatal(err)
log.Fatalf("error running: %v\n", err)
}
}