-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlog.go
More file actions
89 lines (72 loc) · 1.59 KB
/
log.go
File metadata and controls
89 lines (72 loc) · 1.59 KB
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package main
import (
"fmt"
"os"
"path/filepath"
"runtime"
"time"
)
var (
logDesc *os.File
logName string
)
func doLog(format string, args ...any) {
ctime := time.Now()
_, filename, line, _ := runtime.Caller(1)
var text string
if args == nil {
text = format
} else {
text = fmt.Sprintf(format, args...)
}
if logDesc == nil {
fmt.Println(text)
return
}
date := fmt.Sprintf("%2v:%2v.%2v", ctime.Hour(), ctime.Minute(), ctime.Second())
buf := fmt.Sprintf("%v: %15v:%5v: %v\n", date, filepath.Base(filename), line, text)
_, err := logDesc.WriteString(buf)
fmt.Print(buf)
if err != nil {
fmt.Print("DoLog: WriteString failure")
logDesc = nil
return
}
}
/* Prep everything for the cw log */
func startLog() {
t := time.Now().UTC()
/* Create our log file names */
logName = fmt.Sprintf("log/log-%v-%v-%v.log", t.Day(), t.Month(), t.Year())
/* Make log directory */
errr := os.MkdirAll("log", os.ModePerm)
if errr != nil {
fmt.Print(errr.Error())
return
}
/* Open log files */
bdesc, errb := os.OpenFile(logName, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
/* Handle file errors */
if errb != nil {
fmt.Printf("An error occurred when attempting to create log file. Details: %s", errb)
return
}
if logDesc != nil {
doLog("Rotating log.")
logDesc.Close()
}
/* Save descriptors, open/closed elsewhere */
logDesc = bdesc
}
func autoRotateLogs() {
//Rotate when date changes
startDay := time.Now().UTC().Day()
for {
currentDay := time.Now().UTC().Day()
if currentDay != startDay {
startDay = currentDay
startLog()
}
time.Sleep(time.Second)
}
}