@Override public void run(Logging logging, LogEntry entry) { MonitoredResource resource = MonitoredResource.newBuilder("global") .addLabel("project_id", logging.getOptions().getProjectId()) .build(); LogEntry entryWithResource = entry.toBuilder().setResource(resource).build(); logging.write(Collections.singleton(entryWithResource)); System.out.printf("Written entry %s%n", entryWithResource); }
public static MonitoredResource getResource(String projectId, String resourceTypeParam) { String resourceType = resourceTypeParam; if (Strings.isNullOrEmpty(resourceType)) { Resource detectedResourceType = getAutoDetectedResourceType(); resourceType = detectedResourceType.getKey(); } // Currently, "gae_app" is the supported logging Resource type, but we distinguish // between "gae_app_flex", "gae_app_standard" to support zone id, instance name logging on flex // VMs. // Hence, "gae_app_flex", "gae_app_standard" are trimmed to "gae_app" String resourceName = resourceType.startsWith("gae_app") ? "gae_app" : resourceType; MonitoredResource.Builder builder = MonitoredResource.newBuilder(resourceName).addLabel(Label.ProjectId.getKey(), projectId); for (Label label : resourceTypeWithLabels.get(resourceType)) { String value = getValue(label); if (value != null) { builder.addLabel(label.getKey(), value); } } return builder.build(); }
public static void main(String... args) throws Exception { // Create a service object // Credentials are inferred from the environment LoggingOptions options = LoggingOptions.getDefaultInstance(); try (Logging logging = options.getService()) { // Create a log entry LogEntry firstEntry = LogEntry.newBuilder(StringPayload.of("message")) .setLogName("test-log") .setResource( MonitoredResource.newBuilder("global") .addLabel("project_id", options.getProjectId()) .build()) .build(); logging.write(Collections.singleton(firstEntry)); // List log entries Page<LogEntry> entries = logging.listLogEntries( EntryListOption.filter( "logName=projects/" + options.getProjectId() + "/logs/test-log")); for (LogEntry logEntry : entries.iterateAll()) { System.out.println(logEntry); } } } }
public static MonitoredResource getResource(String projectId, String resourceTypeParam) { String resourceType = resourceTypeParam; if (Strings.isNullOrEmpty(resourceType)) { Resource detectedResourceType = getAutoDetectedResourceType(); resourceType = detectedResourceType.getKey(); } // Currently, "gae_app" is the supported logging Resource type, but we distinguish // between "gae_app_flex", "gae_app_standard" to support zone id, instance name logging on flex // VMs. // Hence, "gae_app_flex", "gae_app_standard" are trimmed to "gae_app" String resourceName = resourceType.startsWith("gae_app") ? "gae_app" : resourceType; MonitoredResource.Builder builder = MonitoredResource.newBuilder(resourceName).addLabel(Label.ProjectId.getKey(), projectId); for (Label label : resourceTypeWithLabels.get(resourceType)) { String value = getValue(label); if (value != null) { builder.addLabel(label.getKey(), value); } } return builder.build(); }
@Test public void testBuilder() { assertEquals(TYPE, MONITORED_RESOURCE.getType()); assertEquals(LABELS, MONITORED_RESOURCE.getLabels()); MonitoredResource monitoredResource = MonitoredResource.newBuilder(TYPE) .addLabel("dataset-id", "myDataset") .addLabel("zone", "myZone") .build(); assertEquals(TYPE, monitoredResource.getType()); assertEquals(LABELS, monitoredResource.getLabels()); compareMonitoredResource(MONITORED_RESOURCE, monitoredResource); monitoredResource = MonitoredResource.newBuilder(TYPE) .setType("global") .addLabel("dataset-id", "myDataset") .addLabel("zone", "myZone") .clearLabels() .build(); assertEquals("global", monitoredResource.getType()); assertEquals(ImmutableMap.of(), monitoredResource.getLabels()); }
@Test public void testToBuilder() { compareMonitoredResource(MONITORED_RESOURCE, MONITORED_RESOURCE.toBuilder().build()); MonitoredResource monitoredResource = MONITORED_RESOURCE.toBuilder().setType("global").clearLabels().build(); assertEquals("global", monitoredResource.getType()); assertEquals(ImmutableMap.of(), monitoredResource.getLabels()); monitoredResource = monitoredResource .toBuilder() .setType(TYPE) .setLabels(ImmutableMap.of("dataset-id", "myDataset")) .addLabel("zone", "myZone") .build(); compareMonitoredResource(MONITORED_RESOURCE, monitoredResource); }