로거 되돌림

This commit is contained in:
2023-06-14 00:13:51 +09:00
parent 20b2df1fc5
commit 3add5d9355
10 changed files with 60 additions and 87 deletions

View File

@ -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)
}
}()

View File

@ -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 {

View File

@ -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

1
go.mod
View File

@ -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 (

2
go.sum
View File

@ -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=

View File

@ -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()

View File

@ -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
// </form>
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
}

View File

@ -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
}

View File

@ -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

View File

@ -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()
}
}