-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
40 lines (36 loc) · 865 Bytes
/
main.go
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
38
39
40
package main
import (
"io"
"log"
"log/slog"
"os"
"path/filepath"
"syscall"
"LearningGo/nonblockingWriter"
"LearningGo/socketServer"
)
func main() {
logFile, err := os.OpenFile(
filepath.Join(os.TempDir(), "LearningLog.log"),
syscall.O_CREAT|syscall.O_WRONLY|os.O_APPEND,
0666,
)
if err != nil {
slog.Error(err.Error())
} else {
slog.Info("Log file opened successfully", "file", logFile.Name())
}
defer func(logFile *os.File) {
_ = logFile.Close()
}(logFile)
nbLogFileWriter := nonblockingWriter.NewBufWriter(logFile, 20000)
nbStdErrWriter := nonblockingWriter.NewBufWriter(os.Stderr, 20000)
log.SetOutput(io.MultiWriter(nbLogFileWriter, nbStdErrWriter))
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
defer func() {
if r := recover(); r != nil {
slog.Error("Recovered in f", "r", r)
}
}()
socketServer.Example()
}