Blame view
gologger.go
3.25 KB
3ba7b5695 added mutex locks... |
1 |
// @TODO: Implement mutex lock for files access. |
a99c98307 first commit |
2 3 4 5 6 7 |
package gologger import ( "fmt" "os" "time" |
a99c98307 first commit |
8 |
"strconv" |
3ba7b5695 added mutex locks... |
9 |
"sync" |
a99c98307 first commit |
10 |
) |
3ba7b5695 added mutex locks... |
11 12 |
var muEv = &sync.Mutex{} var muEr = &sync.Mutex{} |
a99c98307 first commit |
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 90 91 92 93 94 95 |
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 const ErrDirName = "error-logs" const EvtDirName = "event-logs" type Logger struct { eventf *os.File eventFileName string errorf *os.File errorFileName string } func NewLogger(eventFileName, errorFileName string) (*Logger, error) { var l Logger var err error timestamp := "_" + strconv.FormatInt(time.Now().Unix(), 10) // create files l.eventFileName = eventFileName l.errorFileName = errorFileName l.eventf, err = os.Create("./" + EvtDirName + "/" + eventFileName + timestamp + ".txt") if err != nil { fmt.Printf("logger: new: couldn't create event log file ") return &l, err } l.errorf, err = os.Create("./" + ErrDirName + "/" + errorFileName + timestamp + ".txt") if err != nil { fmt.Printf("logger: new: couldn't create error log file ") return &l, err } // create directories to keep log files err = os.Mkdir(EvtDirName, os.ModePerm) if err != nil { if !os.IsExist(err) { fmt.Printf("logger: mkdir: couldn't create event log directory ") return &l, err } } err = os.Mkdir(ErrDirName, os.ModePerm) if err != nil { if !os.IsExist(err) { fmt.Printf("logger: new: couldn't create error log directory ") return &l, err } } return &l, nil } func (l *Logger) Close() { // close files err := l.eventf.Close() if err != nil { fmt.Printf("logger: on exit: couldn't close event log file ") } err = l.errorf.Close() if err != nil { fmt.Printf("logger: on exit: couldn't close error log file ") } } func (l *Logger) splitEventLog() { timestamp := "_" + strconv.FormatInt(time.Now().Unix(), 10) |
a99c98307 first commit |
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
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 l.eventf, errnew = os.Create("./" + EvtDirName + "/" + l.eventFileName + timestamp + ".txt") if errnew != nil { fmt.Printf("logger: split: couldn't create event log file ") } } } func (l *Logger) splitErrorLog() { timestamp := "_" + strconv.FormatInt(time.Now().Unix(), 10) 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 l.errorf, errnew = os.Create("./" + ErrDirName + "/" + l.errorFileName + timestamp + ".txt") if errnew != nil { fmt.Printf("logger: split: couldn't create error log file ") } } } func (l *Logger) LogEvent(event string) { |
3ba7b5695 added mutex locks... |
142 143 |
muEv.Lock() defer muEv.Unlock() |
a99c98307 first commit |
144 145 146 147 148 149 |
l.eventf.WriteString(time.Now().Format(time.UnixDate) + ": " + event + " ") l.splitEventLog() } func (l *Logger) LogError(err error) { |
3ba7b5695 added mutex locks... |
150 151 |
muEr.Lock() defer muEr.Unlock() |
2a6c4f4d7 minor change |
152 153 |
l.errorf.WriteString(time.Now().Format(time.UnixDate) + ": " + err.Error() + " ") |
a99c98307 first commit |
154 155 |
l.splitErrorLog() } |