Google Cloud Functions에서 로그 수준의 Stackdriver Logging 활용

5548 단어 5cloudfunctions
Google Cloud Functions(이하 Cloud Functions)로 로그 수준을 나누고 싶습니다.

종종 Go (go111)에서 Cloud Functions를 사용하지만 표준 log 패키지를 사용해도 로그 수준을 분리 할 수 ​​없습니다.
  • htps : // c ぉ d. 오, ぇ. 코 m / 훙 c 치온 s / 두 cs / 모토 린 g / ㎉ 긴 g # 펑 c 치 온 s ぉ g ぉ rld
  • htps : // c ぉ d. 오, ぇ. 코 m / ㎉ 긴 g / 두 cs / 세츠 p /

  • 위 문서를 참조하면 Cloud Functions는 다음과 같이 작성할 수 있습니다.
    func ExampleLogging(w http.ResponseWriter, r *http.Request) {
            ctx := context.Background()
    
            projectID := os.Getenv("GCP_PROJECT")
    
            client, err := logging.NewClient(ctx, projectID)
            if err != nil {
                    log.Fatalf("Failed to create client: %v", err)
            }
            defer client.Close()
    
            logName := "cloudfunctions.googleapis.com%2Fcloud-functions"
    
            logger := client.Logger(logName).StandardLogger(logging.Info)
            logger.Println("info")
    }
    

    조금 번잡합니다. 또한 log 패키지의 출력과 달리 execution_id가 부여되지 않으므로 각 함수 실행 로그를 함께 검색할 수 없습니다.

    github.com/groove-x/cloudfunctions/log 사용



    이 문제를 해결하는 지원 패키지기주 b. 코 m/g를 소개합니다.
    package function
    
    import (
        "fmt"
        "net/http"
    
        "github.com/groove-x/cloudfunctions/log"
    )
    
    func ExampleLogging(w http.ResponseWriter, r *http.Request) {
        log.WithRequest(r)
    
        log.Debug("debug")
        log.Info("info")
        log.Warn("warn")
        log.Error("error")
    }
    

    간단하네요!

    결과는 여기 :


    log.WithRequest(r)에서 요청 정보를 로거에게 기억하면 execution_id 및 추적에 대한 정보가 자동으로 추가됩니다.



    이상.

    좋은 웹페이지 즐겨찾기