diff --git a/trading_assistant_api/common/logger/logger.go b/trading_assistant_api/common/logger/logger.go index 53e4854..eec3301 100644 --- a/trading_assistant_api/common/logger/logger.go +++ b/trading_assistant_api/common/logger/logger.go @@ -4,6 +4,7 @@ import ( "log" "os" "fmt" + "path/filepath" ) type Logger interface { @@ -46,3 +47,20 @@ func (p *prefLogger) Fatalf(format string, v ...any) { func WithPrefix(prefix string) Logger { return &prefLogger{prefix: prefix} } + +func SetupFile(path string) error { + if path == "" { + return fmt.Errorf("log file path empty") + } + if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil { + return err + } + f, err := os.OpenFile(path, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644) + if err != nil { + return err + } + defaultLogger = &stdLogger{ + l: log.New(f, "[app] ", log.LstdFlags|log.Lshortfile), + } + return nil +} diff --git a/trading_assistant_api/services/country/main.go b/trading_assistant_api/services/country/main.go index 5999a87..35bc7d0 100644 --- a/trading_assistant_api/services/country/main.go +++ b/trading_assistant_api/services/country/main.go @@ -15,6 +15,9 @@ import ( func main() { port := utils.GetEnv("PORT", "8081") + if err := logger.SetupFile(utils.GetEnv("LOG_FILE", "/var/log/app/country.log")); err != nil { + logger.L().Printf("setup file logger error: %v", err) + } srv := &http.Server{ Addr: ":" + port, Handler: routes(), diff --git a/trading_assistant_api/services/docker-compose.yml b/trading_assistant_api/services/docker-compose.yml index b148a78..8b519d2 100644 --- a/trading_assistant_api/services/docker-compose.yml +++ b/trading_assistant_api/services/docker-compose.yml @@ -38,6 +38,8 @@ services: JWT_TTL: "24h" ports: - "8080:8080" + volumes: + - ./shared_data/logs/:/var/log/app/ depends_on: postgres: condition: service_healthy @@ -53,6 +55,8 @@ services: # PORT: "8081" # ports: # - "8081:8081" + # volumes: + # - ../shared_data/logs/:/var/log/app/ # restart: unless-stopped volumes: diff --git a/trading_assistant_api/services/user/main.go b/trading_assistant_api/services/user/main.go index b783302..8596f0e 100644 --- a/trading_assistant_api/services/user/main.go +++ b/trading_assistant_api/services/user/main.go @@ -23,6 +23,9 @@ var pg *sql.DB func main() { port := utils.GetEnv("PORT", "8080") + if err := logger.SetupFile(utils.GetEnv("LOG_FILE", "/var/log/app/user.log")); err != nil { + logger.L().Printf("setup file logger error: %v", err) + } srv := &http.Server{ Addr: ":" + port, Handler: routes(),