diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 3473042c0..426cf83e2 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,4 +13,4 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:df8d7b2cc0dbc65871e7edd86601901a0612b272fa3f7f0eb590c5c53aa5f92e + digest: sha256:b0b1c1c89570e229b1026372a2b8989ba31495007055b8d30178b7648503eefa diff --git a/.kokoro/nightly/integration.cfg b/.kokoro/nightly/integration.cfg index e51c7b4c6..a2907a257 100644 --- a/.kokoro/nightly/integration.cfg +++ b/.kokoro/nightly/integration.cfg @@ -13,12 +13,12 @@ env_vars: { # TODO: remove this after we've migrated all tests and scripts env_vars: { key: "GCLOUD_PROJECT" - value: "gcloud-devel" + value: "java-docs-samples-testing" } env_vars: { key: "GOOGLE_CLOUD_PROJECT" - value: "gcloud-devel" + value: "java-docs-samples-testing" } env_vars: { diff --git a/CHANGELOG.md b/CHANGELOG.md index 256d7bfc4..00967bbf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +### [3.7.2](https://github.com/googleapis/java-logging/compare/v3.7.1...v3.7.2) (2022-03-24) + + +### Documentation + +* **sample:** Add sample for Native Image support in Logging ([#880](https://github.com/googleapis/java-logging/issues/880)) ([7e59bf3](https://github.com/googleapis/java-logging/commit/7e59bf3c3676ebc6bfcdf6e951d3d8f0b6c1589f)) + + +### Dependencies + +* update dependency com.google.cloud:native-image-support to v0.12.10 ([#903](https://github.com/googleapis/java-logging/issues/903)) ([b692e02](https://github.com/googleapis/java-logging/commit/b692e0247ea61b290aad0f0245184fd3c026629b)) +* update dependency org.graalvm.buildtools:junit-platform-native to v0.9.10 ([#904](https://github.com/googleapis/java-logging/issues/904)) ([d834a0a](https://github.com/googleapis/java-logging/commit/d834a0a5f10cda8a1327714f8a93c0c6e41143df)) +* update dependency org.graalvm.buildtools:junit-platform-native to v0.9.11 ([#912](https://github.com/googleapis/java-logging/issues/912)) ([c1d6559](https://github.com/googleapis/java-logging/commit/c1d65597ee8ce95dc6276c4f19d13a922c819f0d)) +* update dependency org.graalvm.buildtools:native-maven-plugin to v0.9.10 ([#905](https://github.com/googleapis/java-logging/issues/905)) ([3c44e3e](https://github.com/googleapis/java-logging/commit/3c44e3ed51c52a84b5a5a517a8b8a105f083532c)) +* update dependency org.graalvm.buildtools:native-maven-plugin to v0.9.11 ([#911](https://github.com/googleapis/java-logging/issues/911)) ([3721ef5](https://github.com/googleapis/java-logging/commit/3721ef53305e27afb5bad685a10eb8901988c7b9)) + ### [3.7.1](https://github.com/googleapis/java-logging/compare/v3.7.0...v3.7.1) (2022-03-03) diff --git a/README.md b/README.md index af561067b..43ab9da56 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file com.google.cloud libraries-bom - 24.4.0 + 25.0.0 pom import @@ -43,7 +43,7 @@ If you are using Maven without BOM, add this to your dependencies: com.google.cloud google-cloud-logging - 3.7.0 + 3.7.1 ``` @@ -51,20 +51,20 @@ If you are using Maven without BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies ```Groovy -implementation platform('com.google.cloud:libraries-bom:24.4.0') +implementation platform('com.google.cloud:libraries-bom:25.0.0') implementation 'com.google.cloud:google-cloud-logging' ``` If you are using Gradle without BOM, add this to your dependencies ```Groovy -implementation 'com.google.cloud:google-cloud-logging:3.7.0' +implementation 'com.google.cloud:google-cloud-logging:3.7.1' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-logging" % "3.7.0" +libraryDependencies += "com.google.cloud" % "google-cloud-logging" % "3.7.1" ``` ## Authentication @@ -302,6 +302,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-logging/tree/ | Sample | Source Code | Try it | | --------------------------- | --------------------------------- | ------ | +| Native Image Logging Sample | [source code](https://github.com/googleapis/java-logging/blob/main/samples/native-image-sample/src/main/java/com/example/logging/NativeImageLoggingSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-logging&page=editor&open_in_editor=samples/native-image-sample/src/main/java/com/example/logging/NativeImageLoggingSample.java) | | Get Sink Metadata | [source code](https://github.com/googleapis/java-logging/blob/main/samples/snippets/src/main/java/com/example/logging/GetSinkMetadata.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-logging&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/logging/GetSinkMetadata.java) | | List Log Entries | [source code](https://github.com/googleapis/java-logging/blob/main/samples/snippets/src/main/java/com/example/logging/ListLogEntries.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-logging&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/logging/ListLogEntries.java) | | List Logs | [source code](https://github.com/googleapis/java-logging/blob/main/samples/snippets/src/main/java/com/example/logging/ListLogs.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-logging&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/logging/ListLogs.java) | diff --git a/google-cloud-logging-bom/pom.xml b/google-cloud-logging-bom/pom.xml index 177ff8ede..0c608916e 100644 --- a/google-cloud-logging-bom/pom.xml +++ b/google-cloud-logging-bom/pom.xml @@ -3,12 +3,12 @@ 4.0.0 com.google.cloud google-cloud-logging-bom - 3.7.1 + 3.7.2 pom com.google.cloud google-cloud-shared-config - 1.2.7 + 1.3.0 Google Cloud logging BOM @@ -53,17 +53,17 @@ com.google.cloud google-cloud-logging - 3.7.1 + 3.7.2 com.google.api.grpc grpc-google-cloud-logging-v2 - 0.96.1 + 0.96.2 com.google.api.grpc proto-google-cloud-logging-v2 - 0.96.1 + 0.96.2 diff --git a/google-cloud-logging/pom.xml b/google-cloud-logging/pom.xml index b9c513a3c..d530ee296 100644 --- a/google-cloud-logging/pom.xml +++ b/google-cloud-logging/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-logging - 3.7.1 + 3.7.2 jar Google Cloud Logging https://github.com/googleapis/java-logging @@ -11,7 +11,7 @@ com.google.cloud google-cloud-logging-parent - 3.7.1 + 3.7.2 google-cloud-logging diff --git a/grpc-google-cloud-logging-v2/pom.xml b/grpc-google-cloud-logging-v2/pom.xml index 23666d151..8baa042f7 100644 --- a/grpc-google-cloud-logging-v2/pom.xml +++ b/grpc-google-cloud-logging-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-logging-v2 - 0.96.1 + 0.96.2 grpc-google-cloud-logging-v2 GRPC library for grpc-google-cloud-logging-v2 com.google.cloud google-cloud-logging-parent - 3.7.1 + 3.7.2 diff --git a/pom.xml b/pom.xml index 9145fe3c5..c47d7abdc 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-logging-parent pom - 3.7.1 + 3.7.2 Google Cloud Logging Parent https://github.com/googleapis/java-logging @@ -14,7 +14,7 @@ com.google.cloud google-cloud-shared-config - 1.2.7 + 1.3.0 @@ -61,17 +61,17 @@ com.google.api.grpc proto-google-cloud-logging-v2 - 0.96.1 + 0.96.2 com.google.api.grpc grpc-google-cloud-logging-v2 - 0.96.1 + 0.96.2 com.google.cloud google-cloud-logging - 3.7.1 + 3.7.2 diff --git a/proto-google-cloud-logging-v2/pom.xml b/proto-google-cloud-logging-v2/pom.xml index 8935ac5b4..52bd3303a 100644 --- a/proto-google-cloud-logging-v2/pom.xml +++ b/proto-google-cloud-logging-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-logging-v2 - 0.96.1 + 0.96.2 proto-google-cloud-logging-v2 PROTO library for proto-google-cloud-logging-v2 com.google.cloud google-cloud-logging-parent - 3.7.1 + 3.7.2 diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 05b9c6819..8e2a7e9da 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-logging - 3.7.0 + 3.7.1 diff --git a/samples/native-image-sample/README.md b/samples/native-image-sample/README.md new file mode 100644 index 000000000..398a55e83 --- /dev/null +++ b/samples/native-image-sample/README.md @@ -0,0 +1,71 @@ +# Cloud Logging Client Libraries with Native Image + +This application uses the Google Cloud [Logging Client Libraries](https://github.com/googleapis/java-logging) and can be compiled with Native Image Native Image. + +## Setup Instructions + +You will need to follow these prerequisite steps in order to run the samples: + +1. If you have not already, [create a Google Cloud Platform Project](https://cloud.google.com/resource-manager/docs/creating-managing-projects#creating_a_project). + +2. Install the [Google Cloud SDK](https://cloud.google.com/sdk/) which will allow you to run the sample with your project's credentials. + + Once installed, log in with Application Default Credentials using the following command: + + ``` + gcloud auth application-default login + ``` + + **Note:** Authenticating with Application Default Credentials is convenient to use during development, but we recommend [alternate methods of authentication](https://cloud.google.com/docs/authentication/production) during production use. + +3. Install the GraalVM compiler. + + You can follow the [official installation instructions](https://www.graalvm.org/docs/getting-started/#install-graalvm) from the GraalVM website. + After following the instructions, ensure that you install the native image extension installed by running: + + ``` + gu install native-image + ``` + + Once you finish following the instructions, verify that the default version of Java is set to the GraalVM version by running `java -version` in a terminal. + + You will see something similar to the below output: + + ``` + $ java -version + + openjdk version "11.0.7" 2020-04-14 + OpenJDK Runtime Environment GraalVM CE 20.1.0 (build 11.0.7+10-jvmci-20.1-b02) + OpenJDK 64-Bit Server VM GraalVM CE 20.1.0 (build 11.0.7+10-jvmci-20.1-b02, mixed mode, sharing) + ``` + +4. Enable the [Logging APIs](https://console.cloud.google.com/flows/enableapi?apiid=logging.googleapis.com). + +## Sample + +Navigate to this directory in a new terminal. + +1. Compile the application using the Native Image Compiler. This step may take a few minutes. + + ``` + mvn package -P native -DskipTests + ``` + +2. Run the application: + + ``` + ./target/native-image-sample + ``` + +3. The application will log a message to your local terminal and to Google Cloud Console. + + Navigate to the [Cloud Console Logs Viewer](https://console.cloud.google.com/logs/viewer) to view you logs and find the newly generated log entry in Cloud Console: + ``` + This is a log produced by Native Image. + ``` +### Sample Integration test with Native Image Support +In order to run the sample integration test as a native image, call the following command: + + ``` + mvn test -Pnative + ``` \ No newline at end of file diff --git a/samples/native-image-sample/pom.xml b/samples/native-image-sample/pom.xml new file mode 100644 index 000000000..196a75d86 --- /dev/null +++ b/samples/native-image-sample/pom.xml @@ -0,0 +1,170 @@ + + + + 4.0.0 + com.example.logging + native-image-sample + Native Image Sample + https://github.com/googleapis/java-logging + + + + com.google.cloud.samples + shared-configuration + 1.2.0 + + + + + 1.8 + 1.8 + UTF-8 + + + + + + com.google.cloud + libraries-bom + 25.0.0 + pom + import + + + + + + + com.google.cloud + google-cloud-logging + + + + junit + junit + 4.13.2 + test + + + com.google.truth + truth + 1.1.3 + test + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.2 + + + + true + dependency-jars/ + com.example.logging.NativeImageLoggingSample + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 3.3.0 + + + copy-dependencies + package + + copy-dependencies + + + + ${project.build.directory}/dependency-jars/ + + + + + + + + + + + + native + + + + com.google.cloud + native-image-support + 0.12.10 + + + org.junit.vintage + junit-vintage-engine + 5.8.2 + test + + + org.graalvm.buildtools + junit-platform-native + 0.9.11 + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + 2.22.2 + + + **/IT* + + + + + org.graalvm.buildtools + native-maven-plugin + 0.9.11 + true + + com.example.logging.NativeImageLoggingSample + + --no-fallback + --no-server + + + + + build-native + + build + test + + package + + + test-native + + test + + test + + + + + + + + \ No newline at end of file diff --git a/samples/native-image-sample/src/main/java/com/example/logging/NativeImageLoggingSample.java b/samples/native-image-sample/src/main/java/com/example/logging/NativeImageLoggingSample.java new file mode 100644 index 000000000..6fa688060 --- /dev/null +++ b/samples/native-image-sample/src/main/java/com/example/logging/NativeImageLoggingSample.java @@ -0,0 +1,64 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.logging; + +import com.google.cloud.MonitoredResource; +import com.google.cloud.logging.LogEntry; +import com.google.cloud.logging.Logging; +import com.google.cloud.logging.LoggingOptions; +import com.google.cloud.logging.Payload.StringPayload; +import com.google.cloud.logging.Severity; +import java.time.Duration; +import java.time.Instant; +import java.util.Collections; + +/** Basic sample application which writes a log message to Cloud Logging. */ +public class NativeImageLoggingSample { + + /** Runs the Logging Sample Application. */ + public static void main(String[] args) throws Exception { + Instant startTime = Instant.now(); + // Instantiates a client + Logging client = LoggingOptions.getDefaultInstance().getService(); + + // The name of the log to write to + String logName = "nativeimage_logging_sample.log"; + + // The data to write to the log + String text = "This is a log produced by Native Image."; + + LogEntry entry = + LogEntry.newBuilder(StringPayload.of(text)) + .setSeverity(Severity.INFO) + .setLogName(logName) + .setResource(MonitoredResource.newBuilder("global").build()) + .build(); + + client.write(Collections.singleton(entry)); + client.flush(); + client.close(); + + System.out.println(String.format("Logged: %s", text)); + System.out.println("Log message written to Cloud Logging."); + System.out.println( + "See your logs in the Cloud Console: https://console.cloud.google.com/logs/viewer " + + "(Might take a few seconds to load.)"); + Instant endTime = Instant.now(); + Duration duration = Duration.between(startTime, endTime); + System.out.println("Duration: " + duration.toString()); + } +} diff --git a/samples/native-image-sample/src/test/java/com/example/logging/ITNativeImageLoggingSample.java b/samples/native-image-sample/src/test/java/com/example/logging/ITNativeImageLoggingSample.java new file mode 100644 index 000000000..6a4ba67ca --- /dev/null +++ b/samples/native-image-sample/src/test/java/com/example/logging/ITNativeImageLoggingSample.java @@ -0,0 +1,35 @@ +/* + * Copyright 2022 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.logging; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.cloud.testing.junit4.StdOutCaptureRule; +import org.junit.Rule; +import org.junit.Test; + +public class ITNativeImageLoggingSample { + + @Rule public StdOutCaptureRule stdOut = new StdOutCaptureRule(); + + @Test + public void testLogging() throws Exception { + NativeImageLoggingSample.main(new String[] {}); + assertThat(stdOut.getCapturedOutputAsUtf8String()) + .contains("Logged: This is a log produced by Native Image."); + } +} diff --git a/samples/pom.xml b/samples/pom.xml index b086c0e56..72d7759f9 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -31,6 +31,7 @@ snapshot install-without-bom snippets + native-image-sample diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 9588fce5b..976ed748f 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-logging - 3.7.1 + 3.7.2 diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index a867fb0e0..d9aba92ab 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -29,7 +29,7 @@ com.google.cloud libraries-bom - 24.4.0 + 25.0.0 pom import diff --git a/versions.txt b/versions.txt index 178e205d4..4c886f57b 100644 --- a/versions.txt +++ b/versions.txt @@ -1,6 +1,6 @@ # Format: # module:released-version:current-version -google-cloud-logging:3.7.1:3.7.1 -grpc-google-cloud-logging-v2:0.96.1:0.96.1 -proto-google-cloud-logging-v2:0.96.1:0.96.1 +google-cloud-logging:3.7.2:3.7.2 +grpc-google-cloud-logging-v2:0.96.2:0.96.2 +proto-google-cloud-logging-v2:0.96.2:0.96.2