-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.go
More file actions
37 lines (30 loc) · 789 Bytes
/
Copy pathconfig.go
File metadata and controls
37 lines (30 loc) · 789 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package main
import (
"log"
"log/slog"
"os"
"path/filepath"
)
func initLogging() (*slog.Logger, func()) {
home, err := os.UserHomeDir()
if err != nil {
home = "."
}
logDir := filepath.Join(home, ".askd")
if err := os.MkdirAll(logDir, 0755); err != nil {
log.Printf("failed to create log directory %s: %v", logDir, err)
return nil, func() {}
}
logPath := filepath.Join(logDir, "app.log")
f, err := os.OpenFile(logPath, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
if err != nil {
log.Printf("failed to open log file %s: %v", logPath, err)
return nil, func() {}
}
log.SetOutput(f)
log.SetFlags(log.LstdFlags | log.Lshortfile)
logger := slog.New(slog.NewTextHandler(f, &slog.HandlerOptions{
Level: slog.LevelWarn,
}))
return logger, func() { f.Close() }
}