From b3e8bf7d12f627f275aaa8cdbb2fbea3d6645ad7 Mon Sep 17 00:00:00 2001 From: Owen Date: Sun, 30 Mar 2025 10:52:07 -0400 Subject: [PATCH] Add LOGGER_TIMEZONE env to control the time zone Closes #23 If the name is "" or "UTC", LoadLocation returns UTC. If the name is "Local", LoadLocation returns Local. Otherwise, the name is taken to be a location name corresponding to a file in the IANA Time Zone database, such as "America/New_York". LoadLocation looks for the IANA Time Zone database in the following locations in order: the directory or uncompressed zip file named by the ZONEINFO environment variable on a Unix system, the system standard installation location $GOROOT/lib/time/zoneinfo.zip the time/tzdata package, if it was imported --- logger/logger.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/logger/logger.go b/logger/logger.go index 9ef486d..f033de9 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -53,7 +53,23 @@ func (l *Logger) log(level LogLevel, format string, args ...interface{}) { if level < l.level { return } - timestamp := time.Now().Format("2006/01/02 15:04:05") + + // Get timezone from environment variable or use local timezone + timezone := os.Getenv("LOGGER_TIMEZONE") + var location *time.Location + var err error + + if timezone != "" { + location, err = time.LoadLocation(timezone) + if err != nil { + // If invalid timezone, fall back to local + location = time.Local + } + } else { + location = time.Local + } + + timestamp := time.Now().In(location).Format("2006/01/02 15:04:05") message := fmt.Sprintf(format, args...) l.logger.Printf("%s: %s %s", level.String(), timestamp, message) }