diff --git a/client/client.go b/client/client.go index d59d0bf..763bfcb 100644 --- a/client/client.go +++ b/client/client.go @@ -20,6 +20,7 @@ import ( "time" "unsafe" + "repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/houston/shared" "repositories.action2quare.com/ayo/houston/shared/protos" @@ -196,7 +197,7 @@ func NewClient() (HoustonClient, error) { var client *grpc.ClientConn for { - shared.Logger().Println("grpc.DialContext :", clientConfig.GrpcAddress) + logger.Println("grpc.DialContext :", clientConfig.GrpcAddress) dialContext, cancelDial := context.WithTimeout(context.Background(), 15*time.Second) client, err = grpc.DialContext(dialContext, clientConfig.GrpcAddress, grpc.WithBlock(), grpc.WithTransportCredentials(insecure.NewCredentials())) if err == nil { @@ -205,11 +206,11 @@ func NewClient() (HoustonClient, error) { } cancelDial() - shared.Logger().Println("grpc.DialContext failed :", err) + logger.Println("grpc.DialContext failed :", err) time.Sleep(5 * time.Second) } - shared.Logger().Println("grpc.DialContext succeeded") + logger.Println("grpc.DialContext succeeded") exefile, err := os.Executable() if err != nil { return nil, err @@ -292,12 +293,12 @@ func NewClient() (HoustonClient, error) { args = append(args, os.Args[1:]...) cmd := exec.Command(replacer, args...) if err := cmd.Start(); err != nil { - shared.Logger().Println(err) + logger.Println(err) } else { hc.shutdownFunc() } } else { - shared.Logger().Println(err) + logger.Println(err) } } else { if err := hc.deploy(&dr); err == nil { @@ -305,7 +306,7 @@ func NewClient() (HoustonClient, error) { hc.deploys[dr.Name] = prog op.Refresh(ctx, hc.makeOperationQueryRequest()) } else { - shared.Logger().Println(err) + logger.Println(err) } } @@ -322,35 +323,35 @@ func NewClient() (HoustonClient, error) { } op.Refresh(ctx, hc.makeOperationQueryRequest()) } else { - shared.Logger().Println(err) + logger.Println(err) } case shared.Start: var sr shared.StartProcessRequest unmarshal(&sr, resp.Args) if err := hc.startChildProcess(&sr); err != nil { - shared.Logger().Println(err) + logger.Println(err) } case shared.Stop: var sr shared.StopProcessRequest unmarshal(&sr, resp.Args) if err := hc.stopChildProcess(&sr); err != nil { - shared.Logger().Println(err) + logger.Println(err) } case shared.Restart: var rr shared.RestartProcessRequest unmarshal(&rr, resp.Args) if err := hc.restartChildProcess(&rr); err != nil { - shared.Logger().Println(err) + logger.Println(err) } case shared.Upload: var ur shared.UploadRequest unmarshal(&ur, resp.Args) if err := hc.uploadFiles(&ur); err != nil { - shared.Logger().Println(err) + logger.Println(err) } } } @@ -387,7 +388,7 @@ func (hc *houstonClient) Start() { go func() { c := <-interrupt - shared.Logger().Println("interrupt!!!!!!!! :", c.String()) + logger.Println("interrupt!!!!!!!! :", c.String()) hc.shutdownFunc() }() @@ -399,7 +400,7 @@ func (hc *houstonClient) Start() { default: err := hc.checkOperation() if err != nil { - shared.Logger().Println("hc.checkUpdate failed :", err) + logger.Println("hc.checkUpdate failed :", err) } } } @@ -413,7 +414,7 @@ func (hc *houstonClient) checkOperation() error { defer func() { r := recover() if r != nil { - shared.Logger().Println(r) + logger.Println(r) } }() diff --git a/client/deploy.go b/client/deploy.go index f041c45..485672e 100644 --- a/client/deploy.go +++ b/client/deploy.go @@ -13,6 +13,7 @@ import ( "path/filepath" "strings" + "repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/houston/shared" "golang.org/x/text/encoding/korean" @@ -272,13 +273,13 @@ func (hc *houstonClient) prepareUpdateSelf(req *shared.DeployRequest) (srcdir st } func (hc *houstonClient) deploy(req *shared.DeployRequest) error { - shared.Logger().Println("start deploying") + logger.Println("start deploying") root, err := hc.prepareDeploy(req.Name, req.Version) if err != nil { return err } - shared.Logger().Println("start downloading", req.Url) + logger.Println("start downloading", req.Url) // verpath에 배포 시작 fname, err := download(root, hc.makeDownloadUrl(req.Url), req.AccessToken) if err != nil { diff --git a/client/operation.go b/client/operation.go index f833f30..e04cb2e 100644 --- a/client/operation.go +++ b/client/operation.go @@ -18,6 +18,7 @@ import ( "syscall" "time" + "repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/houston/shared" "repositories.action2quare.com/ayo/houston/shared/protos" ) @@ -54,7 +55,7 @@ func (hc *houstonClient) uploadZipLogFile(zipFile string, name string, version s req, err := http.NewRequest("POST", hc.httpAddr+"/upload", zf) if err != nil { - shared.Logger().Println(err) + logger.Println(err) } req.Header.Set("Houston-Service-Name", name) req.Header.Set("Houston-Service-Version", version) @@ -119,19 +120,19 @@ func zipLogFiles(req *shared.UploadRequest, start, except string) (string, []str relative := file[len(root)+1:] fw, err := w.Create(relative) if err != nil { - shared.Logger().Println(err) + logger.Println(err) return "", nil, err } src, err := os.Open(file) if err != nil { - shared.Logger().Println(err) + logger.Println(err) return "", nil, err } defer src.Close() if _, err = io.Copy(fw, src); err != nil { - shared.Logger().Println(err) + logger.Println(err) return "", nil, err } } @@ -218,7 +219,7 @@ func (hc *houstonClient) launch(meta *procmeta) error { defer func() { r := recover() if r != nil { - shared.Logger().Println(r) + logger.Println(r) debug.PrintStack() } close(relayChan) @@ -264,10 +265,10 @@ func (hc *houstonClient) launch(meta *procmeta) error { os.Remove(oldf) } } else { - shared.Logger().Println("uploadZipLogFile failed :", err) + logger.Println("uploadZipLogFile failed :", err) } } else if err != nil { - shared.Logger().Println("zipLogFiles failed :", err) + logger.Println("zipLogFiles failed :", err) } }(startFile, nextFile) @@ -323,7 +324,7 @@ func (hc *houstonClient) launch(meta *procmeta) error { var errPrepareprocessLaunchFailed = errors.New("prepareProcessLaunch failed") func (hc *houstonClient) startChildProcess(req *shared.StartProcessRequest) error { - shared.Logger().Println("startChildProcess :", *req) + logger.Println("startChildProcess :", *req) if req.Version == "latest" { // 최신 버전을 찾음 latest, err := shared.FindLastestVersion(req.Name) @@ -501,10 +502,10 @@ func (hc *houstonClient) uploadFiles(req *shared.UploadRequest) error { req.Version = latest } - shared.Logger().Println("uploadFiles req :", *req) + logger.Println("uploadFiles req :", *req) for _, child := range hc.childProcs { if child.version == req.Version && child.name == req.Name { - shared.Logger().Println("uploadFiles found :", child.version, child.name) + logger.Println("uploadFiles found :", child.version, child.name) child.logUploadChan <- req return nil } @@ -519,10 +520,10 @@ func (hc *houstonClient) uploadFiles(req *shared.UploadRequest) error { os.Remove(oldf) } } else { - shared.Logger().Println("uploadZipLogFile failed :", err) + logger.Println("uploadZipLogFile failed :", err) } } else if err != nil { - shared.Logger().Println("zipLogFiles failed :", err) + logger.Println("zipLogFiles failed :", err) } return nil diff --git a/go.mod b/go.mod index b96eb6d..0be4d5a 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,7 @@ require ( golang.org/x/text v0.9.0 google.golang.org/grpc v1.55.0 google.golang.org/protobuf v1.30.0 + repositories.action2quare.com/ayo/gocommon v0.0.0-20230613151240-0e6b155201c3 ) require ( diff --git a/go.sum b/go.sum index 0b67ae9..f86b676 100644 --- a/go.sum +++ b/go.sum @@ -18,3 +18,5 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +repositories.action2quare.com/ayo/gocommon v0.0.0-20230613151240-0e6b155201c3 h1:EOWhQ3rBoNGlFmTxqF1ujOI+bXtMbExdRcUo0arLkS8= +repositories.action2quare.com/ayo/gocommon v0.0.0-20230613151240-0e6b155201c3/go.mod h1:ng62uGMGXyQSeuxePG5gJAMtip4Rnspu5Tu7hgvaXns= diff --git a/main.go b/main.go index 7ed3e1b..1430f57 100644 --- a/main.go +++ b/main.go @@ -3,31 +3,28 @@ package main import ( "flag" + "repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/houston/client" "repositories.action2quare.com/ayo/houston/server" - "repositories.action2quare.com/ayo/houston/shared" ) var runAsClient = flag.Bool("client", false, "") var runAsServer = flag.Bool("server", false, "") func main() { - shared.InitLogger() - defer shared.CloseLogger() - if !flag.Parsed() { flag.Parse() } if !*runAsClient && !*runAsServer { - shared.Logger().Fatal("client or server flag is needed") + logger.Fatal("client or server flag is needed") return } if *runAsClient { hc, err := client.NewClient() if err != nil { - shared.Logger().Fatal(err) + logger.Fatal(err) return } hc.Start() diff --git a/server/http_api.go b/server/http_api.go index feda522..5f7d377 100644 --- a/server/http_api.go +++ b/server/http_api.go @@ -9,6 +9,7 @@ import ( "strconv" "time" + "repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/houston/shared" ) @@ -25,7 +26,7 @@ func (h *houstonHandler) GetAgents(w http.ResponseWriter, r *http.Request) { func (h *houstonHandler) GetDeploySources(w http.ResponseWriter, r *http.Request) { files, err := os.ReadDir(h.deployPath) if err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusInternalServerError) return } @@ -61,7 +62,7 @@ func (h *houstonHandler) UploadDeploySource(w http.ResponseWriter, r *http.Reque // file, header, err := r.FormFile("file") if err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusBadRequest) return } @@ -69,7 +70,7 @@ func (h *houstonHandler) UploadDeploySource(w http.ResponseWriter, r *http.Reque contents, err := io.ReadAll(file) if err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusInternalServerError) return } @@ -88,7 +89,7 @@ func (h *houstonHandler) UploadDeploySource(w http.ResponseWriter, r *http.Reque } if err = os.MkdirAll(path.Dir(filename), 0775); err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusInternalServerError) return } @@ -96,7 +97,7 @@ func (h *houstonHandler) UploadDeploySource(w http.ResponseWriter, r *http.Reque // 파일 저장 err = os.WriteFile(filename, contents, 0644) if err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusInternalServerError) return } @@ -118,7 +119,7 @@ func (h *houstonHandler) DeleteDeploySource(w http.ResponseWriter, r *http.Reque // deploys 폴더는 파일시스템 서비스이므로 다운로드 가능 targetpath := path.Join(h.deployPath, name, version) if err := os.RemoveAll(targetpath); err != nil { - shared.Logger().Println("deleteDeploySource failed :", err) + logger.Println("deleteDeploySource failed :", err) w.WriteHeader(http.StatusInternalServerError) return } @@ -138,7 +139,7 @@ func (h *houstonHandler) Deploy(w http.ResponseWriter, r *http.Request) { var targets []string if len(traws) > 0 { if err := json.Unmarshal([]byte(traws), &targets); err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusBadRequest) return } @@ -152,7 +153,7 @@ func (h *houstonHandler) Deploy(w http.ResponseWriter, r *http.Request) { relPath := path.Join(h.deployPath, name, version) files, err := os.ReadDir(relPath) if err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusBadRequest) return } @@ -199,7 +200,7 @@ func (h *houstonHandler) Undeploy(w http.ResponseWriter, r *http.Request) { var targets []string if len(traws) > 0 { if err := json.Unmarshal([]byte(traws), &targets); err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusBadRequest) return } @@ -235,7 +236,7 @@ func (h *houstonHandler) StartProcess(w http.ResponseWriter, r *http.Request) { var targets []string if len(traws) > 0 { if err := json.Unmarshal([]byte(traws), &targets); err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusBadRequest) return } @@ -274,7 +275,7 @@ func (h *houstonHandler) StopProcess(w http.ResponseWriter, r *http.Request) { var targets []string if len(traws) > 0 { if err := json.Unmarshal([]byte(traws), &targets); err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusBadRequest) return } @@ -311,7 +312,7 @@ func (h *houstonHandler) UploadLogs(w http.ResponseWriter, r *http.Request) { } var targets []string if err := json.Unmarshal([]byte(traws), &targets); err != nil { - shared.Logger().Println(err) + logger.Println(err) w.WriteHeader(http.StatusBadRequest) return } diff --git a/server/http_handler.go b/server/http_handler.go index ee18331..b192120 100644 --- a/server/http_handler.go +++ b/server/http_handler.go @@ -10,7 +10,7 @@ import ( "runtime/debug" "strings" - "repositories.action2quare.com/ayo/houston/shared" + "repositories.action2quare.com/ayo/gocommon/logger" ) const ( @@ -57,7 +57,7 @@ func (h *houstonHandler) RegisterHandlers(serveMux *http.ServeMux, prefix string return err } - shared.Logger().Printf("houstonHandler registed. deployPath : %s, downloadPath : %s", h.deployPath, h.downloadPath) + logger.Printf("houstonHandler registed. deployPath : %s, downloadPath : %s", h.deployPath, h.downloadPath) if len(prefix) > 0 { prefix = "/" + prefix @@ -74,7 +74,7 @@ func (h *houstonHandler) RegisterHandlers(serveMux *http.ServeMux, prefix string defer func() { s := recover() if s != nil { - shared.Logger().Println(s) + logger.Println(s) debug.PrintStack() } io.Copy(io.Discard, r.Body) @@ -107,7 +107,7 @@ func (h *houstonHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { defer func() { s := recover() if s != nil { - shared.Logger().Println(s) + logger.Println(s) debug.PrintStack() } }() @@ -132,7 +132,7 @@ func (h *houstonHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { method, ok := h.methods[strings.ToLower(operation)] if !ok { // 없는 operation - shared.Logger().Println("fail to call api. operation is not valid :", operation) + logger.Println("fail to call api. operation is not valid :", operation) w.WriteHeader(http.StatusBadRequest) return } diff --git a/server/server.go b/server/server.go index 9214dbe..019a56d 100644 --- a/server/server.go +++ b/server/server.go @@ -6,6 +6,7 @@ import ( "net" "os" + "repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/houston/shared" "repositories.action2quare.com/ayo/houston/shared/protos" @@ -109,7 +110,7 @@ type Operation interface { func loadServerConfig() serverConfig { configFile, err := os.Open("config.json") if err != nil { - shared.Logger().Println(err) + logger.Println(err) return serverConfig{ GrpcPort: 8080, } @@ -125,14 +126,14 @@ func loadServerConfig() serverConfig { dec := json.NewDecoder(configFile) err = dec.Decode(&config) if err != nil { - shared.Logger().Println(err) + logger.Println(err) return serverConfig{ GrpcPort: 8080, } } if config.Houston == nil { - shared.Logger().Println(`"houston" object is missing in config.json`) + logger.Println(`"houston" object is missing in config.json`) return serverConfig{ GrpcPort: 8080, } @@ -166,7 +167,7 @@ type houstonServer struct { } func (hs *houstonServer) Start() error { - shared.Logger().Println("houston server is started at port", hs.port) + logger.Println("houston server is started at port", hs.port) lis, err := net.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", hs.port)) if err != nil { return err diff --git a/shared/logger.go b/shared/logger.go deleted file mode 100644 index 1b7ea1b..0000000 --- a/shared/logger.go +++ /dev/null @@ -1,32 +0,0 @@ -package shared - -import ( - "io" - "log" - "os" - "path" -) - -var defLogger *log.Logger -var defCloser func() - -func InitLogger() { - name, _ := os.Executable() - base := path.Base(name) - - logfile, _ := os.OpenFile(base+".log", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666) - defCloser = func() { - logfile.Close() - } - defLogger = log.New(io.MultiWriter(logfile, os.Stdout), "", log.LstdFlags) -} - -func Logger() *log.Logger { - return defLogger -} - -func CloseLogger() { - if defCloser != nil { - defCloser() - } -}