Skip to content

Commit 602ca74

Browse files
authored
refactor: enhance logging with caller information and structured output (#137)
- Add imports for `path/filepath` and `runtime` - Remove `log.Lshortfile` from logger initialization - Add `logWithCallerf` method to include caller information in formatted log messages - Add `logWithCaller` method to include caller information in log messages - Update `Errorf` method to use `logWithCallerf` for logging - Update `Fatalf` method to use `logWithCallerf` for logging and ensure program exit - Update `Error` method to use `logWithCaller` for logging - Update `Fatal` method to use `logWithCaller` for logging and ensure program exit Signed-off-by: appleboy <[email protected]>
1 parent 811fe1a commit 602ca74

File tree

1 file changed

+30
-7
lines changed

1 file changed

+30
-7
lines changed

logger.go

+30-7
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"fmt"
55
"log"
66
"os"
7+
"path/filepath"
8+
"runtime"
79
)
810

911
// Logger interface is used throughout gorush
@@ -19,9 +21,9 @@ type Logger interface {
1921
// NewLogger for simple logger.
2022
func NewLogger() Logger {
2123
return defaultLogger{
22-
infoLogger: log.New(os.Stderr, "INFO: ", log.Ldate|log.Ltime|log.Lshortfile),
23-
errorLogger: log.New(os.Stderr, "ERROR: ", log.Ldate|log.Ltime|log.Lshortfile),
24-
fatalLogger: log.New(os.Stderr, "FATAL: ", log.Ldate|log.Ltime|log.Lshortfile),
24+
infoLogger: log.New(os.Stderr, "INFO: ", log.Ldate|log.Ltime),
25+
errorLogger: log.New(os.Stderr, "ERROR: ", log.Ldate|log.Ltime),
26+
fatalLogger: log.New(os.Stderr, "FATAL: ", log.Ldate|log.Ltime),
2527
}
2628
}
2729

@@ -35,24 +37,45 @@ func (l defaultLogger) Infof(format string, args ...interface{}) {
3537
l.infoLogger.Printf(format, args...)
3638
}
3739

40+
func (l defaultLogger) logWithCallerf(logger *log.Logger, format string, args ...interface{}) {
41+
_, file, line, ok := runtime.Caller(2)
42+
if ok {
43+
shortFile := filepath.Base(file)
44+
logger.Printf("%s:%d: %s", shortFile, line, fmt.Sprintf(format, args...))
45+
return
46+
}
47+
logger.Printf(format, args...)
48+
}
49+
50+
func (l defaultLogger) logWithCaller(logger *log.Logger, args ...interface{}) {
51+
_, file, line, ok := runtime.Caller(2)
52+
if ok {
53+
shortFile := filepath.Base(file)
54+
logger.Printf("%s:%d: %s", shortFile, line, fmt.Sprint(args...))
55+
return
56+
}
57+
logger.Println(fmt.Sprint(args...))
58+
}
59+
3860
func (l defaultLogger) Errorf(format string, args ...interface{}) {
39-
l.errorLogger.Printf(format, args...)
61+
l.logWithCallerf(l.errorLogger, format, args...)
4062
}
4163

4264
func (l defaultLogger) Fatalf(format string, args ...interface{}) {
43-
l.fatalLogger.Fatalf(format, args...)
65+
l.logWithCallerf(l.fatalLogger, format, args...)
66+
os.Exit(1)
4467
}
4568

4669
func (l defaultLogger) Info(args ...interface{}) {
4770
l.infoLogger.Println(fmt.Sprint(args...))
4871
}
4972

5073
func (l defaultLogger) Error(args ...interface{}) {
51-
l.errorLogger.Println(fmt.Sprint(args...))
74+
l.logWithCaller(l.errorLogger, args...)
5275
}
5376

5477
func (l defaultLogger) Fatal(args ...interface{}) {
55-
l.fatalLogger.Println(fmt.Sprint(args...))
78+
l.logWithCaller(l.fatalLogger, args...)
5679
os.Exit(1)
5780
}
5881

0 commit comments

Comments
 (0)