robert-min / project-go

Go 언어 리뷰와 기존에 파이썬으로 진행했던 프로젝트를 Go 언어로 개선한 repo
0 stars 0 forks source link

Feat/add logging #5

Closed robert-min closed 1 year ago

robert-min commented 1 year ago

주요 변경점

상세변경점

`logging.go' 시스템 로그, 파일 로그 추가

package lib

import (
    "io"
    "log"
    "os"
    "time"
)

type Logger struct {
    InfoFile    *log.Logger
    InfoSystem  *log.Logger
    ErrorFile   *log.Logger
    ErrorSystem *log.Logger
}

var logger Logger

func logging(logfile *os.File, handler io.Writer, logType string) (filelogger *log.Logger, systemlogger *log.Logger) {
    filelogger = log.New(logfile, logType+" ", log.Ldate|log.Ltime|log.Lshortfile)
    systemlogger = log.New(handler, logType+" ", log.Ldate|log.Ltime|log.Lshortfile)
    return
}

func LogInit(infoHandler io.Writer, errorHandler io.Writer) {
    now := time.Now().UTC()
    path := "./login-api/logs/" + now.Format("2006-01-01")
    logfile, _ := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
    logger.InfoFile, logger.InfoSystem = logging(logfile, infoHandler, "[INFO]")
    logger.ErrorFile, logger.ErrorSystem = logging(logfile, errorHandler, "[ERROR]")
}

func LogInfo(infoMessage string) {
    logger.InfoFile.Println(infoMessage)
    logger.InfoSystem.Println(infoMessage)
}

func LogError(ErrorMessage string) {
    logger.ErrorFile.Println(ErrorMessage)
    logger.ErrorSystem.Println(ErrorMessage)
}

기존 api에 로그 메시지 추가

func (a *AppHandler) deleteUserHandler(w http.ResponseWriter, r *http.Request) {
    vars := mux.Vars(r)
    id := a.db.DeleteUser(vars["id"])
    rd.JSON(w, http.StatusOK, id)
    lib.LogInfo("200 | DELETE /user/" + vars["id"])
}