Menyiapkan Cloud Logging untuk Java

Anda dapat menulis log ke Cloud Logging dari aplikasi Java dengan menggunakan appender Logback atau java.util.logging handler, atau menggunakan library Cloud Logging untuk Java secara langsung.

Agen Cloud Logging tidak harus diinstal untuk menggunakan library Cloud Logging untuk Java.

Sebelum memulai

  1. Login keakun Anda. Google Cloud Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Logging API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Logging API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

Appender Logback untuk Cloud Logging

Dengan appender Logback, Anda dapat menggunakan Cloud Logging dengan fasad logging SLF4J.

Menginstal dependensi

Jika Anda menggunakan Maven, tambahkan kode berikut ke file pom.xml Anda: Untuk informasi lebih lanjut tentang BOM, lihat BOM Library Google Cloud Platform.

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-logging-logback</artifactId>
  <version>0.131.11-alpha</version>
</dependency>

Jika menggunakan Gradle, tambahkan kode berikut ke dependensi Anda:

implementation 'com.google.cloud:google-cloud-logging-logback:0.131.11-alpha'

Jika Anda menggunakan sbt, tambahkan kode berikut ke dependensi Anda:

libraryDependencies += "com.google.cloud" % "google-cloud-logging-logback" % "0.131.11-alpha"

Konfigurasi Logback

Logback dapat dikonfigurasi secara terprogram atau menggunakan skrip yang dinyatakan dalam XML atau Groovy.

Anda dapat menyesuaikan batas minimum tingkat keparahan, nama log, atau memberikan peningkat tambahan. Berikut adalah contoh konfigurasi Logback dalam format XML:

<configuration>
  <appender name="CLOUD" class="com.google.cloud.logging.logback.LoggingAppender">
    <!-- Optional : filter logs at or above a level -->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
      <level>INFO</level>
    </filter>
    <log>application.log</log> <!-- Optional : default java.log -->
    <resourceType>gae_app</resourceType> <!-- Optional : default: auto-detected, fallback: global -->
    <enhancer>com.example.logging.logback.enhancers.ExampleEnhancer</enhancer> <!-- Optional -->
    <flushLevel>WARN</flushLevel> <!-- Optional : default ERROR -->
  </appender>

  <root level="info">
    <appender-ref ref="CLOUD" />
  </root>
</configuration>

Contoh

Setelah mengonfigurasi Logback untuk menggunakan Logback appender Cloud Logging, Anda kini dapat mengalihkan log menggunakan API logging SLF4J. Berikan Google Cloud konfigurasi jika Anda berencana untuk menjalankan contoh secara lokal atau di luar Google Cloud. Cuplikan ini menunjukkan cara mencatat ke dalam log menggunakan fasad SLF4J dalam aplikasi Anda:


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Quickstart {
  private static final Logger logger = LoggerFactory.getLogger(Quickstart.class);

  public static void main(String[] args) {
    logger.info("Logging INFO with Logback");
    logger.error("Logging ERROR with Logback");
  }
}

Pengendali java.util.logging

Anda juga dapat menggunakan Cloud Logging API menggunakan pengendali Java Logging API default.

Menginstal dependensi

Jika Anda menggunakan Maven dengan BOM, tambahkan kode berikut ke file pom.xml:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>com.google.cloud</groupId>
      <artifactId>libraries-bom</artifactId>
      <version>26.55.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

<dependencies>
  <dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-logging</artifactId>
  </dependency>

  <!-- ...
</dependencies>

Jika Anda menggunakan Maven tanpa BOM, tambahkan kode berikut ke dependensi Anda:

<dependency>
  <groupId>com.google.cloud</groupId>
  <artifactId>google-cloud-logging</artifactId>
  <version>3.21.3</version>
</dependency>

Jika menggunakan Gradle, tambahkan kode berikut ke dependensi Anda:

implementation platform('com.google.cloud:libraries-bom:26.74.0')

implementation 'com.google.cloud:google-cloud-logging'

Jika Anda menggunakan sbt, tambahkan kode berikut ke dependensi Anda:

libraryDependencies += "com.google.cloud" % "google-cloud-logging" % "3.24.0"

Jika menggunakan Visual Studio Code atau IntelliJ, Anda dapat menambahkan library klien ke project menggunakan plugin IDE berikut:

Plugin menyediakan fungsi tambahan, seperti pengelolaan kunci untuk akun layanan. Lihat dokumentasi setiap plugin untuk mengetahui detailnya.

Konfigurasi java.util.logging

Pengendali logging dapat ditambahkan secara terprogram atau menggunakan file konfigurasi. Jalur ke file konfigurasi harus diberikan ke aplikasi Anda sebagai properti sistem:

  -Djava.util.logging.config.file=/path/to/logging.properties

Berikut adalah contoh file konfigurasi:

# To use this configuration, add to system properties : -Djava.util.logging.config.file="/path/to/file"
#
.level = INFO

# it is recommended that io.grpc and sun.net logging level is kept at INFO level,
# as both these packages are used by Cloud internals and can result in verbose / initialization problems.
io.grpc.netty.level=INFO
sun.net.level=INFO

com.example.logging.jul.Quickstart.handlers=com.google.cloud.logging.LoggingHandler
# default : java.log
com.google.cloud.logging.LoggingHandler.log=custom_log

# default : INFO
com.google.cloud.logging.LoggingHandler.level=FINE

# default : ERROR
com.google.cloud.logging.LoggingHandler.flushLevel=ERROR

# default : auto-detected, fallback "global"
com.google.cloud.logging.LoggingHandler.resourceType=container

# custom formatter
com.google.cloud.logging.LoggingHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%3$s: %5$s%6$s

#optional enhancers (to add additional fields, labels)
com.google.cloud.logging.LoggingHandler.enhancers=com.example.logging.jul.enhancers.ExampleEnhancer

Contoh

Berikan Google Cloud konfigurasi jika Anda berencana untuk menjalankan contoh secara lokal atau di luar Google Cloud. Cuplikan ini menunjukkan cara mencatat log menggunakan java.util.logging:


import java.util.logging.Logger;

public class Quickstart {
  private static final Logger logger = Logger.getLogger(Quickstart.class.getName());

  public static void main(String[] args) {
    logger.info("Logging INFO with java.util.logging");
    logger.severe("Logging ERROR with java.util.logging");
  }
}

Konfigurasi Umum

Bagian berikut membahas konfigurasi yang umum untuk pengendali java.util.logging dan appender Logback untuk Cloud Logging.

Default

Appender Logback dan pengendali java.util.logging menggunakan default berikut untuk membuat instance klien Cloud Logging:

  • Nama log : java.log

  • Batas minimum untuk mencatat log : INFO

  • Tingkat keparahan flush : ERROR

Library Cloud Logging untuk Java mengelompokkan pesan berdasarkan ukuran dan waktu sejak penulisan terakhir. Batch dengan permintaan logging pada atau di atas tingkat keparahan flush akan segera ditulis.

Deteksi jenis resource yang dipantau

Semua log yang dikirim melalui library Cloud Logging memerlukan jenis resource yang dipantau untuk mengidentifikasi aplikasi Anda.

Appender Logback dan pengendali java.util.logging menyediakan deteksi jenis resource otomatis untuk aplikasi App Engine, Compute Engine, dan Google Kubernetes Engine Anda.

Resource yang dipantau global digunakan sebagai default di lingkungan lain.

Anda dapat mengganti jenis resource yang dipantau ke a jenis yang valid di Konfigurasi appender Logback atau java.util.logging Konfigurasi Pengendali.

Kolom dan label tambahan

Dengan appender Logback dan pengendali java.util.logging, Anda dapat menambahkan atau memperbarui kolom pada objek LogEntry menggunakan instance LoggingEnhancer.

Peningkat harus dikonfigurasi seperti yang ditunjukkan dalam konfigurasi appender Logback atau konfigurasi pengendali java.util.logging:


import com.google.cloud.logging.LogEntry;
import com.google.cloud.logging.LoggingEnhancer;

// Add / update additional fields to the log entry
public class ExampleEnhancer implements LoggingEnhancer {

  @Override
  public void enhanceLogEntry(LogEntry.Builder logEntry) {
    // add additional labels
    logEntry.addLabel("test-label-1", "test-value-1");
  }
}

Penggunaan label kustom mungkin tidak didukung untuk konfigurasi Anda. Misalnya, log Dataflow tidak menyertakan label ini.

Untuk mengetahui informasi selengkapnya tentang penginstalan, lihat dokumentasi untuk library Cloud Logging untuk Java. Anda juga dapat melaporkan masalah menggunakan the issue tracker.

Menulis log dengan library klien Cloud Logging

Untuk mengetahui informasi tentang cara menggunakan library klien Cloud Logging untuk Java secara langsung, lihat Library Klien Cloud Logging.

Menjalankan di Google Cloud

Agar aplikasi dapat menulis log menggunakan library Cloud Logging untuk Java, akun layanan untuk resource yang mendasarinya harus memiliki peran IAM Penulis Log (roles/logging.logWriter). Sebagian besar Google Cloud lingkungan otomatis mengonfigurasi akun layanan default untuk memiliki peran ini.

App Engine

Cloud Logging otomatis diaktifkan untuk App Engine, dan akun layanan default aplikasi Anda memiliki izin IAM secara default untuk menulis entri log.

Lingkungan standar App Engine, secara default, menggunakan java.util.logging.Logger API; API ini menulis ke Cloud Logging secara langsung dan mudah dikonfigurasi.

Untuk mengetahui detail selengkapnya, lihat dokumentasi App Engine tentang Membaca dan Menulis Log Aplikasi.

Lingkungan fleksibel App Engine

Di lingkungan fleksibel App Engine, java.util.logging menggunakan ConsoleHandler secara default, dan mengirim log ke stdout dan stderr.

Runtime Jetty disertakan dengan library Cloud Logging untuk Java.

Pengendali java.util.logging dapat digunakan untuk mencatat log langsung ke Cloud Logging dengan menyediakan logging.properties di app.yaml Anda seperti yang ditunjukkan di sini:

    env_variables:
      JETTY_ARGS: -Djava.util.logging.config.file=WEB-INF/logging.properties

Logging ID pelacakan tersedia di runtime Jetty jika Anda menggunakan pengendali java.util.logging atau appender Logback.

Saat berjalan di lingkungan fleksibel App Engine, instance TraceLoggingEnhancer menambahkan ID pelacakan yang aman untuk thread ke setiap entri log menggunakan label trace_id.

Google Kubernetes Engine (GKE)

GKE otomatis memberikan peran IAM Penulis Log (roles/logging.logWriter) kepada akun layanan default. Jika Anda menggunakan Workload Identity Federation untuk GKE dengan akun layanan default ini agar workload dapat mengakses Google Cloud API tertentu, tidak diperlukan konfigurasi tambahan. Namun, jika Anda menggunakan Workload Identity Federation untuk GKE dengan akun layanan IAM kustom, pastikan akun layanan kustom memiliki peran Penulis Log (roles/logging.logWriter).

Jika diperlukan, Anda juga dapat menggunakan perintah berikut untuk menambahkan cakupan akses logging.write saat membuat cluster:

gcloud container clusters create example-cluster-name \
    --scopes https://www.googleapis.com/auth/logging.write

Compute Engine

Saat menggunakan Compute Engine instance VM, tambahkan cloud-platform cakupan akses ke setiap instance. Saat membuat instance baru melalui Google Cloud konsol, Anda dapat melakukannya di bagian Identity and API access pada panel Create Instance. Gunakan akun layanan default Compute Engine atau akun layanan lain pilihan Anda, dan pilih Allow full access to all Cloud APIs di bagian Identity and API access. Akun layanan mana pun yang Anda pilih, pastikan akun tersebut telah diberi peranPenulis Log di bagian IAM & Admin di konsol.Google Cloud

Menjalankan secara lokal dan di tempat lain

Untuk menggunakan library Cloud Logging untuk Java di luar Google Cloud, termasuk menjalankan library di workstation Anda sendiri, di komputer pusat data Anda, atau di instance VM penyedia cloud lain, Anda harus menyiapkan Kredensial Default Aplikasi (ADC) di lingkungan lokal Anda untuk melakukan autentikasi ke library Cloud Logging untuk Java.

Untuk mengetahui informasi selengkapnya, lihat Menyiapkan ADC untuk lingkungan lokal atau penyedia cloud lainnya.

Melihat log

Di Google Cloud konsol, buka halaman Logs Explorer:

Buka Logs Explorer

Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Logging.

Di Logs Explorer, Anda harus menentukan satu atau beberapa resource, tetapi pemilihan resource mungkin tidak jelas. Berikut beberapa tips untuk membantu Anda memulai:

Untuk mengetahui informasi tambahan, lihat Menggunakan Logs Explorer.