Java 용 SDK를 사용하여 StackDriver Logging v2 (Cloud Logging) 로깅

11323 단어 GAEScalagcp자바gce

문서



StackDriver Logging 공식 문서
htps : // c ぉ d. 오, ぇ. 코 m/㎉긴 g/두 cs/

클라이언트 라이브러리 정보
h tps : // c ぉ d. 오, ぇ. 코 m / ㎉ 긴 g / 두 cs / 아피 / ぃ b 라리 s

소개



2016.11 현재 v2로의 전환기.
브라우저에서 열람했을 때의 로그 뷰어에도 「향후 몇 주간에, 로그 열람자는 Stackdriver Logging v2 API로 마이그레이션합니다.」라고 표시되는 일도 있어 최신의 v2로 시험해 보기로 한다.
덧붙여 자신이 Scala 쪽이 쓰기 쉽기 때문에 Scala로 쓰고 매스 (라고 해도 대부분 Java API를 부르고 있을 뿐이므로 문제없이 읽을 수 있을 것입니다).

라이브러리 얻기



상기 「클라이언트 라이브러리에 대해」의 페이지에 있는 「라이브러리를 프로젝트에 추가한다」의 곳에 표시되고 있는 MAVEN/GRADLE는 왠지 404 에러 표시되고 있지만, 영어의 페이지에 가면 버젼을 확인할 수 있다.
현재의 최신판은 이하의 모양.

build.sbt
scalaVersion := "2.11.8"

libraryDependencies ++= Seq(
  "com.google.apis" % "google-api-services-logging" % "v2beta1-rev23-1.22.0"
)

프로그래밍



참고로 한 문서는 이쪽:
htps : // c ぉ d. 오, ぇ. 코 m / ㎉ 긴 g / 두 cs / 아피 / 타 sks / c 레아 친 g ぉ gs
Github에 오르는 코드는 여기 :
htps : // 기주 b. 이 m / go g ぇ C ぉ dP t t rm / 쟈 ゔ ぁ 도 cs ㅇ mp ぇ s / b ぉ b / ms r / ㎉ 긴 g / src / MAIN / JA ゔ/ ぃ stぉ gs. 그럼

이 코드에는 주의점이 있어 v1 베이스로 쓰여져 있다고 하는 것으로, 이것을 v2 의 API용으로 번역하지 않으면 안 된다.

그 때에 참고가 되는 것이 이쪽의 이행 가이드.
h tps : // c ぉ d. 오, ぇ. 코 m / ㎉ 긴 g / 두 cs / 아피 / v2 / 미 g 라치 온 - v2

그래서 코드를 작성합니다.

우선은 Logging을 취득하는 곳. 이곳은 변경없이 괜찮습니다.
  def getLoggingService() = {
    val transport = new NetHttpTransport()
    val jsonFactory = JacksonFactory.getDefaultInstance()
    var credential = GoogleCredential.getApplicationDefault(transport, jsonFactory)
    if (credential.createScopedRequired()) {
      credential = credential.createScoped(List(LoggingScopes.LOGGING_READ).asJava)
    }

    new Logging.Builder(transport, jsonFactory, credential).setApplicationName("mysample").build()
  }

다음에 로그를 기입하는 부분.
v2 API로 이행하면서, 필수 부분에만 깎아 본 것이 이하.
  val monitor = new MonitoredResource().setType("global")  // (1)

  val entry =
    new LogEntry()
        .setTextPayload("hello, logging!") // (2)
        .setLogName("projects/自分のプロジェクトID/logs/ログ種類") // (3)
        .setResource(monitor)

  val content = new WriteLogEntriesRequest().setEntries(List(entry).asJava)
  service.entries().write(content).execute()

(1) ··· 「global」이라고 하면 로그 뷰어상에서는 「Custom」에, 「gae_app」라고 하면 App Engine에 카테고리화 된다. 그건 그렇고, 어딘가에 나열되지 않습니까? 생각했지만 찾을 수 없어 ...
(2) ··· 출력하고 싶은 메시지를 쓴다
(3) ··· 이 포맷은 정해져 있다. 「로그 종류」의 곳은 기존의 것에 정리할 수도 있고, 자신 오리지날인 것을 정의할 수도 있다

소스 코드 전체 게시



Main.scala
import com.google.api.client.http.javanet._
import com.google.api.client.json.jackson2._
import com.google.api.client.googleapis.auth.oauth2._
import com.google.api.services.logging._

import com.google.api.services.logging.v2beta1._
import com.google.api.services.logging.v2beta1.model._

import scala.collection.JavaConverters._

object Main extends App {
  val service = {
    val transport = new NetHttpTransport()
    val jsonFactory = JacksonFactory.getDefaultInstance()
    var credential = GoogleCredential.getApplicationDefault(transport, jsonFactory)
    if (credential.createScopedRequired()) {
      credential = credential.createScoped(LoggingScopes.all())
    }

    new Logging.Builder(transport, jsonFactory, credential).setApplicationName("mysample").build()
  }

  val monitor = new MonitoredResource().setType("global")

  val entry =
    new LogEntry()
        .setTextPayload("hello, logging!")
        .setLogName("projects/自分のプロジェクトID/logs/ログ種類")
        .setResource(monitor)

  val content = new WriteLogEntriesRequest().setEntries(List(entry).asJava)
  service.entries().write(content).execute()
}

로그 뷰어





덧붙여 이 프로그램의 실행에 있어서 「로그 종류」에 「mylogtype」이라고 하는 오리지날인 것을 지정해 보았다.

끝에



이것을 베이스로 나머지는 API 문서의 setter계 중심에 읽어 가면 로그를 리치로 해 갈 수 있을 것!

좋은 웹페이지 즐겨찾기