Blame view
main.go
4.38 KB
a99c98307 first commit |
1 2 3 4 5 |
package gologger import ( "fmt" "os" |
e025a8738 platform agnostic... |
6 |
"path/filepath" |
98708cdaf new version, does... |
7 |
"runtime" |
3ba7b5695 added mutex locks... |
8 |
"sync" |
baa4468b7 Comments go befor... |
9 |
"time" |
a99c98307 first commit |
10 |
) |
baa4468b7 Comments go befor... |
11 12 13 14 15 |
const MaxLogFileSize5MB int64 = 5 * 1024 * 1024 const MaxLogFileSize1MB int64 = 1 * 1024 * 1024 const MaxLogFileSize500KB int64 = 500 * 1024 const MaxLogFileSize100KB int64 = 100 * 1024 const MaxLogFileSize512B int64 = 512 |
a99c98307 first commit |
16 17 18 19 20 |
const ErrDirName = "error-logs" const EvtDirName = "event-logs" type Logger struct { |
23ce66f0f optional init par... |
21 22 |
muEv *sync.Mutex eventf *os.File |
a99c98307 first commit |
23 |
eventFileName string |
23ce66f0f optional init par... |
24 25 26 |
muEr *sync.Mutex errorf *os.File |
a99c98307 first commit |
27 28 |
errorFileName string } |
98708cdaf new version, does... |
29 |
var logger Logger |
a99c98307 first commit |
30 |
|
98708cdaf new version, does... |
31 |
func Init(eventFileName, errorFileName string) error { |
ce403bd83 changed timestamp... |
32 |
timestamp := "_" + time.Now().Format(time.RFC3339) |
23ce66f0f optional init par... |
33 34 35 36 37 38 39 40 41 42 43 |
var err error // event file/dir if eventFileName != "" { err = os.Mkdir(EvtDirName, os.ModePerm) if err != nil { if !os.IsExist(err) { fmt.Printf("logger: mkdir: couldn't create event log directory ") return err } |
a99c98307 first commit |
44 |
} |
a99c98307 first commit |
45 |
|
23ce66f0f optional init par... |
46 47 48 49 50 51 |
logger.eventFileName = eventFileName path := filepath.Join(EvtDirName, eventFileName+timestamp+".txt") logger.eventf, err = os.Create(path) if err != nil { fmt.Printf("logger: new: couldn't create event log file ") |
98708cdaf new version, does... |
52 |
return err |
a99c98307 first commit |
53 54 |
} } |
23ce66f0f optional init par... |
55 56 57 58 59 60 61 62 63 64 |
// error file/dir if errorFileName != "" { err = os.Mkdir(ErrDirName, os.ModePerm) if err != nil { if !os.IsExist(err) { fmt.Printf("logger: new: couldn't create error log directory ") return err } } |
e025a8738 platform agnostic... |
65 |
|
23ce66f0f optional init par... |
66 67 68 69 70 71 72 73 |
logger.errorFileName = errorFileName path := filepath.Join(ErrDirName, errorFileName+timestamp+".txt") logger.errorf, err = os.Create(path) if err != nil { fmt.Printf("logger: new: couldn't create error log file ") return err } |
e025a8738 platform agnostic... |
74 |
} |
98708cdaf new version, does... |
75 76 |
return nil } |
327c98634 added Print() for... |
77 78 79 80 |
func Print(s string) { fmt.Printf(time.Now().Format(time.RFC3339) + ": " + s + " ") } |
98708cdaf new version, does... |
81 |
func LogEvent(event string) { |
23ce66f0f optional init par... |
82 83 84 85 86 87 88 |
if logger.eventf != nil { logger.muEv.Lock() defer logger.muEv.Unlock() logger.eventf.WriteString(time.Now().Format(time.RFC3339) + ": " + event + " ") logger.splitEventLog() } |
98708cdaf new version, does... |
89 90 91 |
} func LogError(comment string, err error) { |
23ce66f0f optional init par... |
92 93 94 95 96 97 98 |
if logger.errorf != nil { logger.muEr.Lock() defer logger.muEr.Unlock() logger.errorf.WriteString(time.Now().Format(time.RFC3339) + ": " + comment + ": " + err.Error() + " ") logger.splitErrorLog() } |
98708cdaf new version, does... |
99 |
} |
2f4b177f0 trace log and tra... |
100 |
func TraceEvent(event string) { |
23ce66f0f optional init par... |
101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
if logger.eventf != nil { logger.muEv.Lock() defer logger.muEv.Unlock() _, file, line, ok := runtime.Caller(1) var s string if ok { s = fmt.Sprintf("%s: %s %d: %s ", time.Now().Format(time.RFC3339), file, line, event) } else { s = fmt.Sprintf(time.Now().Format(time.RFC3339) + ": [can't retreive stack details]:" + event + " ") } logger.eventf.WriteString(s) logger.splitEventLog() |
98708cdaf new version, does... |
115 |
} |
98708cdaf new version, does... |
116 |
} |
2f4b177f0 trace log and tra... |
117 |
func TraceError(err error) { |
23ce66f0f optional init par... |
118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
if logger.errorf != nil { logger.muEr.Lock() defer logger.muEr.Unlock() _, file, line, ok := runtime.Caller(1) var s string if ok { s = fmt.Sprintf("%s %s %d: %s ", time.Now().Format(time.RFC3339), file, line, err.Error()) } else { s = fmt.Sprintf(time.Now().Format(time.RFC3339) + ": [can't retreive stack details]:" + err.Error() + " ") } logger.errorf.WriteString(s) logger.splitErrorLog() |
98708cdaf new version, does... |
132 |
} |
a99c98307 first commit |
133 |
} |
98708cdaf new version, does... |
134 |
func Close() { |
23ce66f0f optional init par... |
135 136 137 138 139 140 |
if logger.eventf != nil { err := logger.eventf.Close() if err != nil { fmt.Printf("logger: on exit: couldn't close event log file ") } |
a99c98307 first commit |
141 |
} |
23ce66f0f optional init par... |
142 143 144 145 146 147 |
if logger.errorf != nil { err := logger.errorf.Close() if err != nil { fmt.Printf("logger: on exit: couldn't close error log file ") } |
a99c98307 first commit |
148 149 150 151 |
} } func (l *Logger) splitEventLog() { |
ce403bd83 changed timestamp... |
152 |
timestamp := "_" + time.Now().Format(time.RFC3339) |
a99c98307 first commit |
153 |
|
a99c98307 first commit |
154 155 156 157 158 159 160 161 162 163 164 |
evfstats, _ := l.eventf.Stat() if evfstats.Size() >= MaxLogFileSize100KB { // close old file err := l.eventf.Close() if err != nil { fmt.Printf("logger: split: couldn't close event file ") return } // open new file var errnew error |
e025a8738 platform agnostic... |
165 166 |
path := filepath.Join(EvtDirName, l.eventFileName+timestamp) l.eventf, errnew = os.Create(path) |
a99c98307 first commit |
167 168 169 170 171 172 173 174 175 |
if errnew != nil { fmt.Printf("logger: split: couldn't create event log file ") } } } func (l *Logger) splitErrorLog() { |
ce403bd83 changed timestamp... |
176 |
timestamp := "_" + time.Now().Format(time.RFC3339) |
a99c98307 first commit |
177 178 179 180 181 182 183 184 185 186 187 188 |
erfstats, _ := l.errorf.Stat() if erfstats.Size() >= MaxLogFileSize100KB { // close old file err := l.errorf.Close() if err != nil { fmt.Printf("logger: split: couldn't close error file ") return } // open new file var errnew error |
e025a8738 platform agnostic... |
189 190 |
path := filepath.Join(ErrDirName, l.errorFileName+timestamp) l.errorf, errnew = os.Create(path) |
a99c98307 first commit |
191 192 193 194 195 196 197 |
if errnew != nil { fmt.Printf("logger: split: couldn't create error log file ") } } } |