Skip to content

Commit 218a7b3

Browse files
committed
Add error return in Setup and Stop; Add rename existing file if needed.
- Added corresponding tests.
1 parent a8f4adc commit 218a7b3

File tree

3 files changed

+257
-30
lines changed

3 files changed

+257
-30
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module github.com/mjbmarques/MjGoLogger
22

3-
go 1.21
3+
go 1.25.5

mjgologger.go

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,37 @@ import (
55
"log"
66
"os"
77
"runtime"
8+
"time"
89
)
910

1011
var myLogger *log.Logger
1112
var file *os.File
1213

13-
func Setup(fileName string) {
14+
func Setup(fileName string) error {
1415

16+
// Take care of log rotation by renaming existing file
17+
if fileExists(fileName) {
18+
renameFile(fileName)
19+
}
20+
21+
// Create new log file
1522
var err error
1623
file, err = os.Create(fileName)
1724
if err != nil {
1825
fmt.Println("ERROR: failed to create file with filename: ", fileName)
19-
return
26+
return err
2027
}
2128
myLogger = log.New(file, "", log.LstdFlags)
29+
return nil
2230
}
2331

24-
func Stop() {
32+
func Stop() error {
2533
err := file.Close()
2634
if err != nil {
2735
fmt.Println("Error: failed to close file with filename: " + file.Name())
36+
return err
2837
}
38+
return nil
2939
}
3040

3141
func Info(msg string, args ...any) {
@@ -44,6 +54,21 @@ func Error(msg string, args ...any) {
4454
logMessage("[ERROR]", msg, args...)
4555
}
4656

57+
func renameFile(oldName string) {
58+
// Append timestamp to old file name with format YYYYMMDD_HHMMSS.ms, based on time lib's format.go reference.
59+
timestamp := time.Now().Format("20060102_150405.00")
60+
newFileName := oldName + "." + timestamp
61+
err := os.Rename(oldName, newFileName)
62+
if err != nil {
63+
fmt.Println("ERROR: failed to rename existing file: ", oldName, "to", newFileName)
64+
}
65+
}
66+
67+
func fileExists(filename string) bool {
68+
_, err := os.Stat(filename)
69+
return err == nil
70+
}
71+
4772
func logMessage(severity string, msg string, args ...any) {
4873
prefix := generatePrefix(severity, 3)
4974
myLogger.Println(prefix + fmt.Sprintf(msg, args...))

0 commit comments

Comments
 (0)