파일에 직접 로깅하는 로거로 교체

This commit is contained in:
2023-06-13 20:03:10 +09:00
parent d490188bd2
commit c1847ee3e1
12 changed files with 116 additions and 77 deletions

View File

@ -20,7 +20,6 @@ import (
"time" "time"
"unsafe" "unsafe"
"repositories.action2quare.com/ayo/gocommon/logger"
"repositories.action2quare.com/ayo/houston/shared" "repositories.action2quare.com/ayo/houston/shared"
"repositories.action2quare.com/ayo/houston/shared/protos" "repositories.action2quare.com/ayo/houston/shared/protos"
@ -197,7 +196,7 @@ func NewClient() (HoustonClient, error) {
var client *grpc.ClientConn var client *grpc.ClientConn
for { for {
logger.Println("grpc.DialContext :", clientConfig.GrpcAddress) shared.Logger().Println("grpc.DialContext :", clientConfig.GrpcAddress)
dialContext, cancelDial := context.WithTimeout(context.Background(), 15*time.Second) dialContext, cancelDial := context.WithTimeout(context.Background(), 15*time.Second)
client, err = grpc.DialContext(dialContext, clientConfig.GrpcAddress, grpc.WithBlock(), grpc.WithTransportCredentials(insecure.NewCredentials())) client, err = grpc.DialContext(dialContext, clientConfig.GrpcAddress, grpc.WithBlock(), grpc.WithTransportCredentials(insecure.NewCredentials()))
if err == nil { if err == nil {
@ -206,11 +205,11 @@ func NewClient() (HoustonClient, error) {
} }
cancelDial() cancelDial()
logger.Println("grpc.DialContext failed :", err) shared.Logger().Println("grpc.DialContext failed :", err)
time.Sleep(5 * time.Second) time.Sleep(5 * time.Second)
} }
logger.Println("grpc.DialContext succeeded") shared.Logger().Println("grpc.DialContext succeeded")
exefile, err := os.Executable() exefile, err := os.Executable()
if err != nil { if err != nil {
return nil, err return nil, err
@ -284,7 +283,7 @@ func NewClient() (HoustonClient, error) {
var dr shared.DeployRequest var dr shared.DeployRequest
unmarshal(&dr, resp.Args) unmarshal(&dr, resp.Args)
logger.Println(dr.Name, myname) shared.Logger().Println(dr.Name, myname)
if dr.Name == myname { if dr.Name == myname {
if srcdir, replacer, err := hc.prepareUpdateSelf(&dr); err == nil { if srcdir, replacer, err := hc.prepareUpdateSelf(&dr); err == nil {
args := []string{ args := []string{
@ -293,14 +292,15 @@ func NewClient() (HoustonClient, error) {
filepath.ToSlash(os.Args[0]), filepath.ToSlash(os.Args[0]),
} }
args = append(args, os.Args[1:]...) args = append(args, os.Args[1:]...)
shared.Logger().Println(replacer, args)
cmd := exec.Command(replacer, args...) cmd := exec.Command(replacer, args...)
if err := cmd.Start(); err != nil { if err := cmd.Start(); err != nil {
logger.Println(err) shared.Logger().Println(err)
} else { } else {
hc.shutdownFunc() hc.shutdownFunc()
} }
} else { } else {
logger.Println(err) shared.Logger().Println(err)
} }
} else { } else {
if err := hc.deploy(&dr); err == nil { if err := hc.deploy(&dr); err == nil {
@ -308,7 +308,7 @@ func NewClient() (HoustonClient, error) {
hc.deploys[dr.Name] = prog hc.deploys[dr.Name] = prog
op.Refresh(ctx, hc.makeOperationQueryRequest()) op.Refresh(ctx, hc.makeOperationQueryRequest())
} else { } else {
logger.Println(err) shared.Logger().Println(err)
} }
} }
@ -325,35 +325,35 @@ func NewClient() (HoustonClient, error) {
} }
op.Refresh(ctx, hc.makeOperationQueryRequest()) op.Refresh(ctx, hc.makeOperationQueryRequest())
} else { } else {
logger.Println(err) shared.Logger().Println(err)
} }
case shared.Start: case shared.Start:
var sr shared.StartProcessRequest var sr shared.StartProcessRequest
unmarshal(&sr, resp.Args) unmarshal(&sr, resp.Args)
if err := hc.startChildProcess(&sr); err != nil { if err := hc.startChildProcess(&sr); err != nil {
logger.Println(err) shared.Logger().Println(err)
} }
case shared.Stop: case shared.Stop:
var sr shared.StopProcessRequest var sr shared.StopProcessRequest
unmarshal(&sr, resp.Args) unmarshal(&sr, resp.Args)
if err := hc.stopChildProcess(&sr); err != nil { if err := hc.stopChildProcess(&sr); err != nil {
logger.Println(err) shared.Logger().Println(err)
} }
case shared.Restart: case shared.Restart:
var rr shared.RestartProcessRequest var rr shared.RestartProcessRequest
unmarshal(&rr, resp.Args) unmarshal(&rr, resp.Args)
if err := hc.restartChildProcess(&rr); err != nil { if err := hc.restartChildProcess(&rr); err != nil {
logger.Println(err) shared.Logger().Println(err)
} }
case shared.Upload: case shared.Upload:
var ur shared.UploadRequest var ur shared.UploadRequest
unmarshal(&ur, resp.Args) unmarshal(&ur, resp.Args)
if err := hc.uploadFiles(&ur); err != nil { if err := hc.uploadFiles(&ur); err != nil {
logger.Println(err) shared.Logger().Println(err)
} }
} }
} }
@ -390,7 +390,7 @@ func (hc *houstonClient) Start() {
go func() { go func() {
c := <-interrupt c := <-interrupt
logger.Println("interrupt!!!!!!!! :", c.String()) shared.Logger().Println("interrupt!!!!!!!! :", c.String())
hc.shutdownFunc() hc.shutdownFunc()
}() }()
@ -402,7 +402,7 @@ func (hc *houstonClient) Start() {
default: default:
err := hc.checkOperation() err := hc.checkOperation()
if err != nil { if err != nil {
logger.Println("hc.checkUpdate failed :", err) shared.Logger().Println("hc.checkUpdate failed :", err)
} }
} }
} }
@ -416,7 +416,7 @@ func (hc *houstonClient) checkOperation() error {
defer func() { defer func() {
r := recover() r := recover()
if r != nil { if r != nil {
logger.Error(r) shared.Logger().Println(r)
} }
}() }()
@ -438,7 +438,7 @@ func (hc *houstonClient) checkOperation() error {
cl.CloseSend() cl.CloseSend()
return err return err
} }
logger.Println(update) shared.Logger().Println(update)
hc.operationChan <- update hc.operationChan <- update
} }
} }

View File

@ -13,8 +13,6 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"repositories.action2quare.com/ayo/gocommon/logger"
"repositories.action2quare.com/ayo/houston/shared" "repositories.action2quare.com/ayo/houston/shared"
"golang.org/x/text/encoding/korean" "golang.org/x/text/encoding/korean"
@ -258,20 +256,24 @@ func (hc *houstonClient) prepareUpdateSelf(req *shared.DeployRequest) (srcdir st
selfname, _ := os.Executable() selfname, _ := os.Executable()
srcreplacer := path.Join(path.Dir(fname), "replacer") + path.Ext(selfname) srcreplacer := path.Join(path.Dir(fname), "replacer") + path.Ext(selfname)
replacer = "replacer" + path.Ext(selfname) replacer = "./" + filepath.ToSlash("replacer"+path.Ext(selfname))
err = copy(srcreplacer, replacer)
if err == nil {
err = os.Chmod(replacer, 0775)
}
// replacer먼저 가져옴 // replacer먼저 가져옴
return filepath.ToSlash(tempdir), filepath.ToSlash(replacer), copy(srcreplacer, replacer) return filepath.ToSlash(tempdir), replacer, err
} }
func (hc *houstonClient) deploy(req *shared.DeployRequest) error { func (hc *houstonClient) deploy(req *shared.DeployRequest) error {
logger.Println("start deploying") shared.Logger().Println("start deploying")
root, err := hc.prepareDeploy(req.Name, req.Version) root, err := hc.prepareDeploy(req.Name, req.Version)
if err != nil { if err != nil {
return err return err
} }
logger.Println("start downloading", req.Url) shared.Logger().Println("start downloading", req.Url)
// verpath에 배포 시작 // verpath에 배포 시작
fname, err := download(root, hc.makeDownloadUrl(req.Url), req.AccessToken) fname, err := download(root, hc.makeDownloadUrl(req.Url), req.AccessToken)
if err != nil { if err != nil {

View File

@ -18,8 +18,6 @@ import (
"syscall" "syscall"
"time" "time"
"repositories.action2quare.com/ayo/gocommon/logger"
"repositories.action2quare.com/ayo/houston/shared" "repositories.action2quare.com/ayo/houston/shared"
"repositories.action2quare.com/ayo/houston/shared/protos" "repositories.action2quare.com/ayo/houston/shared/protos"
) )
@ -56,7 +54,7 @@ func (hc *houstonClient) uploadZipLogFile(zipFile string, name string, version s
req, err := http.NewRequest("POST", hc.httpAddr+"/upload", zf) req, err := http.NewRequest("POST", hc.httpAddr+"/upload", zf)
if err != nil { if err != nil {
logger.Error(err) shared.Logger().Println(err)
} }
req.Header.Set("Houston-Service-Name", name) req.Header.Set("Houston-Service-Name", name)
req.Header.Set("Houston-Service-Version", version) req.Header.Set("Houston-Service-Version", version)
@ -121,19 +119,19 @@ func zipLogFiles(req *shared.UploadRequest, start, except string) (string, []str
relative := file[len(root)+1:] relative := file[len(root)+1:]
fw, err := w.Create(relative) fw, err := w.Create(relative)
if err != nil { if err != nil {
logger.Error(err) shared.Logger().Println(err)
return "", nil, err return "", nil, err
} }
src, err := os.Open(file) src, err := os.Open(file)
if err != nil { if err != nil {
logger.Error(err) shared.Logger().Println(err)
return "", nil, err return "", nil, err
} }
defer src.Close() defer src.Close()
if _, err = io.Copy(fw, src); err != nil { if _, err = io.Copy(fw, src); err != nil {
logger.Error(err) shared.Logger().Println(err)
return "", nil, err return "", nil, err
} }
} }
@ -220,7 +218,7 @@ func (hc *houstonClient) launch(meta *procmeta) error {
defer func() { defer func() {
r := recover() r := recover()
if r != nil { if r != nil {
logger.Println(r) shared.Logger().Println(r)
debug.PrintStack() debug.PrintStack()
} }
close(relayChan) close(relayChan)
@ -266,10 +264,10 @@ func (hc *houstonClient) launch(meta *procmeta) error {
os.Remove(oldf) os.Remove(oldf)
} }
} else { } else {
logger.Println("uploadZipLogFile failed :", err) shared.Logger().Println("uploadZipLogFile failed :", err)
} }
} else if err != nil { } else if err != nil {
logger.Println("zipLogFiles failed :", err) shared.Logger().Println("zipLogFiles failed :", err)
} }
}(startFile, nextFile) }(startFile, nextFile)
@ -325,7 +323,7 @@ func (hc *houstonClient) launch(meta *procmeta) error {
var errPrepareprocessLaunchFailed = errors.New("prepareProcessLaunch failed") var errPrepareprocessLaunchFailed = errors.New("prepareProcessLaunch failed")
func (hc *houstonClient) startChildProcess(req *shared.StartProcessRequest) error { func (hc *houstonClient) startChildProcess(req *shared.StartProcessRequest) error {
logger.Println("startChildProcess :", *req) shared.Logger().Println("startChildProcess :", *req)
if req.Version == "latest" { if req.Version == "latest" {
// 최신 버전을 찾음 // 최신 버전을 찾음
latest, err := shared.FindLastestVersion(req.Name) latest, err := shared.FindLastestVersion(req.Name)
@ -503,10 +501,10 @@ func (hc *houstonClient) uploadFiles(req *shared.UploadRequest) error {
req.Version = latest req.Version = latest
} }
logger.Println("uploadFiles req :", *req) shared.Logger().Println("uploadFiles req :", *req)
for _, child := range hc.childProcs { for _, child := range hc.childProcs {
if child.version == req.Version && child.name == req.Name { if child.version == req.Version && child.name == req.Name {
logger.Println("uploadFiles found :", child.version, child.name) shared.Logger().Println("uploadFiles found :", child.version, child.name)
child.logUploadChan <- req child.logUploadChan <- req
return nil return nil
} }
@ -521,10 +519,10 @@ func (hc *houstonClient) uploadFiles(req *shared.UploadRequest) error {
os.Remove(oldf) os.Remove(oldf)
} }
} else { } else {
logger.Println("uploadZipLogFile failed :", err) shared.Logger().Println("uploadZipLogFile failed :", err)
} }
} else if err != nil { } else if err != nil {
logger.Println("zipLogFiles failed :", err) shared.Logger().Println("zipLogFiles failed :", err)
} }
return nil return nil

1
go.mod
View File

@ -6,7 +6,6 @@ require (
golang.org/x/text v0.9.0 golang.org/x/text v0.9.0
google.golang.org/grpc v1.55.0 google.golang.org/grpc v1.55.0
google.golang.org/protobuf v1.30.0 google.golang.org/protobuf v1.30.0
repositories.action2quare.com/ayo/gocommon v0.0.0-20230528100715-93bd4f6c0bab
) )
require ( require (

2
go.sum
View File

@ -18,5 +18,3 @@ 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.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 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng=
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
repositories.action2quare.com/ayo/gocommon v0.0.0-20230528100715-93bd4f6c0bab h1:EMlxwDayv3rn8ttJcJuDLYoHA5odVn85+LjdAuw+2dw=
repositories.action2quare.com/ayo/gocommon v0.0.0-20230528100715-93bd4f6c0bab/go.mod h1:ng62uGMGXyQSeuxePG5gJAMtip4Rnspu5Tu7hgvaXns=

View File

@ -3,28 +3,30 @@ package main
import ( import (
"flag" "flag"
"repositories.action2quare.com/ayo/gocommon/logger"
"repositories.action2quare.com/ayo/houston/client" "repositories.action2quare.com/ayo/houston/client"
"repositories.action2quare.com/ayo/houston/server" "repositories.action2quare.com/ayo/houston/server"
"repositories.action2quare.com/ayo/houston/shared"
) )
var runAsClient = flag.Bool("client", false, "") var runAsClient = flag.Bool("client", false, "")
var runAsServer = flag.Bool("server", false, "") var runAsServer = flag.Bool("server", false, "")
func main() { func main() {
shared.InitLogger()
if !flag.Parsed() { if !flag.Parsed() {
flag.Parse() flag.Parse()
} }
if !*runAsClient && !*runAsServer { if !*runAsClient && !*runAsServer {
logger.Fatal("client or server flag is needed") shared.Logger().Fatal("client or server flag is needed")
return return
} }
if *runAsClient { if *runAsClient {
hc, err := client.NewClient() hc, err := client.NewClient()
if err != nil { if err != nil {
logger.Fatal(err) shared.Logger().Fatal(err)
return return
} }
hc.Start() hc.Start()

View File

@ -2,8 +2,8 @@ package main
import ( import (
"errors" "errors"
"fmt"
"io" "io"
"log"
"os" "os"
"os/exec" "os/exec"
"path" "path"
@ -48,23 +48,28 @@ func copy(src, dst string) error {
} }
func main() { func main() {
logfile, _ := os.OpenFile("replacer.log", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
defer logfile.Close()
stdlog := log.New(logfile, "", log.LstdFlags)
args := os.Args args := os.Args
// args[1] : 나를 시작한 pid. pid가 종료될 때 까지 기다림 // args[1] : 나를 시작한 pid. pid가 종료될 때 까지 기다림
// args[2] : target 폴더 // args[2] : target 폴더
// args[3:] : 다시 시작할 때 넘겨줄 arguments(프로세스 이름 포함) // args[3:] : 다시 시작할 때 넘겨줄 arguments(프로세스 이름 포함)
fmt.Println(args) stdlog.Println(args)
pid, err := strconv.Atoi(args[1]) pid, err := strconv.Atoi(args[1])
if err != nil { if err != nil {
panic(err) stdlog.Fatal(err)
} }
proc, err := os.FindProcess(pid) proc, err := os.FindProcess(pid)
if err != nil { if err != nil {
panic(err) stdlog.Fatal(err)
} }
proc.Wait() proc.Wait()
selfext, _ := os.Executable() selfext, _ := os.Executable()
selfext = path.Base(selfext)
entries, _ := os.ReadDir(args[2]) entries, _ := os.ReadDir(args[2])
for _, ent := range entries { for _, ent := range entries {
@ -74,16 +79,27 @@ func main() {
if ent.IsDir() { if ent.IsDir() {
if err := os.MkdirAll(ent.Name(), 0775); err != nil { if err := os.MkdirAll(ent.Name(), 0775); err != nil {
panic(err) stdlog.Fatal(err)
} }
} else { } else {
if err := copy(path.Join(args[2], ent.Name()), ent.Name()); err != nil { if err := copy(path.Join(args[2], ent.Name()), ent.Name()); err != nil {
panic(err) stdlog.Println("copy failed :", path.Join(args[2], ent.Name()), ent.Name())
stdlog.Fatal(err)
} }
} }
} }
os.RemoveAll(args[2]) err = os.RemoveAll(args[2])
if err != nil {
stdlog.Println("os.RemoveAll failed :", args[2], err)
}
err = os.Chmod(args[3], 0775)
if err != nil {
stdlog.Println("os.Chmod failed :", err)
}
stdlog.Println("exec.Command :", args)
cmd := exec.Command(args[3], args[4:]...) cmd := exec.Command(args[3], args[4:]...)
cmd.Start() cmd.Start()
} }

View File

@ -9,7 +9,6 @@ import (
"strconv" "strconv"
"time" "time"
"repositories.action2quare.com/ayo/gocommon/logger"
"repositories.action2quare.com/ayo/houston/shared" "repositories.action2quare.com/ayo/houston/shared"
) )
@ -26,7 +25,7 @@ func (h *houstonHandler) GetAgents(w http.ResponseWriter, r *http.Request) {
func (h *houstonHandler) GetDeploySources(w http.ResponseWriter, r *http.Request) { func (h *houstonHandler) GetDeploySources(w http.ResponseWriter, r *http.Request) {
files, err := os.ReadDir(h.deployPath) files, err := os.ReadDir(h.deployPath)
if err != nil { if err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)
return return
} }
@ -62,7 +61,7 @@ func (h *houstonHandler) UploadDeploySource(w http.ResponseWriter, r *http.Reque
// </form> // </form>
file, header, err := r.FormFile("file") file, header, err := r.FormFile("file")
if err != nil { if err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
return return
} }
@ -70,7 +69,7 @@ func (h *houstonHandler) UploadDeploySource(w http.ResponseWriter, r *http.Reque
contents, err := io.ReadAll(file) contents, err := io.ReadAll(file)
if err != nil { if err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)
return return
} }
@ -89,7 +88,7 @@ func (h *houstonHandler) UploadDeploySource(w http.ResponseWriter, r *http.Reque
} }
if err = os.MkdirAll(path.Dir(filename), 0775); err != nil { if err = os.MkdirAll(path.Dir(filename), 0775); err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)
return return
} }
@ -97,7 +96,7 @@ func (h *houstonHandler) UploadDeploySource(w http.ResponseWriter, r *http.Reque
// 파일 저장 // 파일 저장
err = os.WriteFile(filename, contents, 0644) err = os.WriteFile(filename, contents, 0644)
if err != nil { if err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)
return return
} }
@ -119,7 +118,7 @@ func (h *houstonHandler) DeleteDeploySource(w http.ResponseWriter, r *http.Reque
// deploys 폴더는 파일시스템 서비스이므로 다운로드 가능 // deploys 폴더는 파일시스템 서비스이므로 다운로드 가능
targetpath := path.Join(h.deployPath, name, version) targetpath := path.Join(h.deployPath, name, version)
if err := os.RemoveAll(targetpath); err != nil { if err := os.RemoveAll(targetpath); err != nil {
logger.Println("deleteDeploySource failed :", err) shared.Logger().Println("deleteDeploySource failed :", err)
w.WriteHeader(http.StatusInternalServerError) w.WriteHeader(http.StatusInternalServerError)
return return
} }
@ -139,7 +138,7 @@ func (h *houstonHandler) Deploy(w http.ResponseWriter, r *http.Request) {
var targets []string var targets []string
if len(traws) > 0 { if len(traws) > 0 {
if err := json.Unmarshal([]byte(traws), &targets); err != nil { if err := json.Unmarshal([]byte(traws), &targets); err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
return return
} }
@ -153,7 +152,7 @@ func (h *houstonHandler) Deploy(w http.ResponseWriter, r *http.Request) {
relPath := path.Join(h.deployPath, name, version) relPath := path.Join(h.deployPath, name, version)
files, err := os.ReadDir(relPath) files, err := os.ReadDir(relPath)
if err != nil { if err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
return return
} }
@ -200,7 +199,7 @@ func (h *houstonHandler) Undeploy(w http.ResponseWriter, r *http.Request) {
var targets []string var targets []string
if len(traws) > 0 { if len(traws) > 0 {
if err := json.Unmarshal([]byte(traws), &targets); err != nil { if err := json.Unmarshal([]byte(traws), &targets); err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
return return
} }
@ -236,7 +235,7 @@ func (h *houstonHandler) StartProcess(w http.ResponseWriter, r *http.Request) {
var targets []string var targets []string
if len(traws) > 0 { if len(traws) > 0 {
if err := json.Unmarshal([]byte(traws), &targets); err != nil { if err := json.Unmarshal([]byte(traws), &targets); err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
return return
} }
@ -275,7 +274,7 @@ func (h *houstonHandler) StopProcess(w http.ResponseWriter, r *http.Request) {
var targets []string var targets []string
if len(traws) > 0 { if len(traws) > 0 {
if err := json.Unmarshal([]byte(traws), &targets); err != nil { if err := json.Unmarshal([]byte(traws), &targets); err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
return return
} }
@ -312,7 +311,7 @@ func (h *houstonHandler) UploadLogs(w http.ResponseWriter, r *http.Request) {
} }
var targets []string var targets []string
if err := json.Unmarshal([]byte(traws), &targets); err != nil { if err := json.Unmarshal([]byte(traws), &targets); err != nil {
logger.Error(err) shared.Logger().Println(err)
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
return return
} }

View File

@ -10,7 +10,7 @@ import (
"runtime/debug" "runtime/debug"
"strings" "strings"
"repositories.action2quare.com/ayo/gocommon/logger" "repositories.action2quare.com/ayo/houston/shared"
) )
const ( const (
@ -57,7 +57,7 @@ func (h *houstonHandler) RegisterHandlers(serveMux *http.ServeMux, prefix string
return err return err
} }
logger.Printf("houstonHandler registed. deployPath : %s, downloadPath : %s", h.deployPath, h.downloadPath) shared.Logger().Printf("houstonHandler registed. deployPath : %s, downloadPath : %s", h.deployPath, h.downloadPath)
if len(prefix) > 0 { if len(prefix) > 0 {
prefix = "/" + prefix prefix = "/" + prefix
@ -74,7 +74,7 @@ func (h *houstonHandler) RegisterHandlers(serveMux *http.ServeMux, prefix string
defer func() { defer func() {
s := recover() s := recover()
if s != nil { if s != nil {
logger.Println(s) shared.Logger().Println(s)
debug.PrintStack() debug.PrintStack()
} }
io.Copy(io.Discard, r.Body) io.Copy(io.Discard, r.Body)
@ -107,7 +107,7 @@ func (h *houstonHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
defer func() { defer func() {
s := recover() s := recover()
if s != nil { if s != nil {
logger.Println(s) shared.Logger().Println(s)
debug.PrintStack() debug.PrintStack()
} }
}() }()
@ -132,7 +132,7 @@ func (h *houstonHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
method, ok := h.methods[strings.ToLower(operation)] method, ok := h.methods[strings.ToLower(operation)]
if !ok { if !ok {
// 없는 operation // 없는 operation
logger.Println("fail to call api. operation is not valid :", operation) shared.Logger().Println("fail to call api. operation is not valid :", operation)
w.WriteHeader(http.StatusBadRequest) w.WriteHeader(http.StatusBadRequest)
return return
} }

View File

@ -7,8 +7,6 @@ import (
"reflect" "reflect"
"sync" "sync"
"repositories.action2quare.com/ayo/gocommon/logger"
"repositories.action2quare.com/ayo/houston/shared" "repositories.action2quare.com/ayo/houston/shared"
"repositories.action2quare.com/ayo/houston/shared/protos" "repositories.action2quare.com/ayo/houston/shared/protos"
) )
@ -75,7 +73,7 @@ func (sp *hostPool) regist(desc *protos.OperationQueryRequest) (string, chan *op
sp.hosts[desc.Hostname] = host sp.hosts[desc.Hostname] = host
test, _ := json.Marshal(sp.hosts) test, _ := json.Marshal(sp.hosts)
logger.Println(string(test)) shared.Logger().Println(string(test))
return desc.Hostname, host.opChan return desc.Hostname, host.opChan
} }
@ -90,7 +88,7 @@ func (sp *hostPool) refresh(desc *protos.OperationQueryRequest) {
} }
test, _ := json.Marshal(sp.hosts) test, _ := json.Marshal(sp.hosts)
logger.Println(string(test)) shared.Logger().Println(string(test))
} }
func (sp *hostPool) unregist(key string) { func (sp *hostPool) unregist(key string) {

View File

@ -6,7 +6,6 @@ import (
"net" "net"
"os" "os"
"repositories.action2quare.com/ayo/gocommon/logger"
"repositories.action2quare.com/ayo/houston/shared" "repositories.action2quare.com/ayo/houston/shared"
"repositories.action2quare.com/ayo/houston/shared/protos" "repositories.action2quare.com/ayo/houston/shared/protos"
@ -110,7 +109,7 @@ type Operation interface {
func loadServerConfig() serverConfig { func loadServerConfig() serverConfig {
configFile, err := os.Open("config.json") configFile, err := os.Open("config.json")
if err != nil { if err != nil {
logger.Error(err) shared.Logger().Println(err)
return serverConfig{ return serverConfig{
GrpcPort: 8080, GrpcPort: 8080,
} }
@ -126,14 +125,14 @@ func loadServerConfig() serverConfig {
dec := json.NewDecoder(configFile) dec := json.NewDecoder(configFile)
err = dec.Decode(&config) err = dec.Decode(&config)
if err != nil { if err != nil {
logger.Error(err) shared.Logger().Println(err)
return serverConfig{ return serverConfig{
GrpcPort: 8080, GrpcPort: 8080,
} }
} }
if config.Houston == nil { if config.Houston == nil {
logger.Error(`"houston" object is missing in config.json`) shared.Logger().Println(`"houston" object is missing in config.json`)
return serverConfig{ return serverConfig{
GrpcPort: 8080, GrpcPort: 8080,
} }
@ -167,7 +166,7 @@ type houstonServer struct {
} }
func (hs *houstonServer) Start() error { func (hs *houstonServer) Start() error {
logger.Println("houston server is started at port", hs.port) shared.Logger().Println("houston server is started at port", hs.port)
lis, err := net.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", hs.port)) lis, err := net.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", hs.port))
if err != nil { if err != nil {
return err return err

28
shared/logger.go Normal file
View File

@ -0,0 +1,28 @@
package shared
import (
"log"
"os"
"path"
)
var defLogger *log.Logger
func InitLogger() {
name, _ := os.Executable()
base := path.Base(name)
logfile, _ := os.OpenFile(base+".log", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
defLogger = log.New(logfile, "", log.LstdFlags)
}
func Logger() *log.Logger {
return defLogger
}
func CloseLogger() {
outfile := defLogger.Writer().(*os.File)
if outfile != nil {
outfile.Close()
}
}