String getProjectId() { return LoggingOptions.getDefaultInstance().getProjectId(); }
@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); }
private static ApiFuture<AsyncPage<LogEntry>> listLogEntriesAsync( final LoggingOptions serviceOptions, final Map<Option.OptionType, ?> options) { final ListLogEntriesRequest request = listLogEntriesRequest(serviceOptions.getProjectId(), options); ApiFuture<ListLogEntriesResponse> list = serviceOptions.getLoggingRpcV2().list(request); return transform( list, new Function<ListLogEntriesResponse, AsyncPage<LogEntry>>() { @Override public AsyncPage<LogEntry> apply(ListLogEntriesResponse listLogEntrysResponse) { List<LogEntry> entries = listLogEntrysResponse.getEntriesList() == null ? ImmutableList.<LogEntry>of() : Lists.transform( listLogEntrysResponse.getEntriesList(), LogEntry.FROM_PB_FUNCTION); String cursor = listLogEntrysResponse.getNextPageToken().equals("") ? null : listLogEntrysResponse.getNextPageToken(); return new AsyncPageImpl<>( new LogEntryPageFetcher(serviceOptions, cursor, options), cursor, entries); } }); }
@Override public ApiFuture<Sink> createAsync(SinkInfo sink) { CreateSinkRequest request = CreateSinkRequest.newBuilder() .setParent(ProjectName.of(getOptions().getProjectId()).toString()) .setSink(sink.toPb(getOptions().getProjectId())) .build(); return transform(rpc.create(request), Sink.fromPbFunction(this)); }
@Override public ApiFuture<Sink> updateAsync(SinkInfo sink) { UpdateSinkRequest request = UpdateSinkRequest.newBuilder() .setSinkName(ProjectSinkName.of(getOptions().getProjectId(), sink.getName()).toString()) .setSink(sink.toPb(getOptions().getProjectId())) .build(); return transform(rpc.update(request), Sink.fromPbFunction(this)); }
@Override public ApiFuture<Boolean> deleteMetricAsync(String metric) { DeleteLogMetricRequest request = DeleteLogMetricRequest.newBuilder() .setMetricName(ProjectMetricName.of(getOptions().getProjectId(), metric).toString()) .build(); return transform(rpc.delete(request), EMPTY_TO_BOOLEAN_FUNCTION); }
public ApiFuture<Boolean> deleteLogAsync(String log) { DeleteLogRequest request = DeleteLogRequest.newBuilder() .setLogName(ProjectLogName.of(getOptions().getProjectId(), log).toString()) .build(); return transform(rpc.delete(request), EMPTY_TO_BOOLEAN_FUNCTION); }
@Override public ApiFuture<Boolean> deleteSinkAsync(String sink) { DeleteSinkRequest request = DeleteSinkRequest.newBuilder() .setSinkName(ProjectSinkName.of(getOptions().getProjectId(), sink).toString()) .build(); return transform(rpc.delete(request), EMPTY_TO_BOOLEAN_FUNCTION); }
@Override public ApiFuture<Sink> getSinkAsync(String sink) { GetSinkRequest request = GetSinkRequest.newBuilder() .setSinkName(ProjectSinkName.of(getOptions().getProjectId(), sink).toString()) .build(); return transform(rpc.get(request), Sink.fromPbFunction(this)); }
@Override public ApiFuture<Metric> getMetricAsync(String metric) { GetLogMetricRequest request = GetLogMetricRequest.newBuilder() .setMetricName(ProjectMetricName.of(getOptions().getProjectId(), metric).toString()) .build(); return transform(rpc.get(request), Metric.fromPbFunction(this)); }
private static ListSinksRequest listSinksRequest( LoggingOptions serviceOptions, Map<Option.OptionType, ?> options) { ListSinksRequest.Builder builder = ListSinksRequest.newBuilder(); builder.setParent(ProjectName.of(serviceOptions.getProjectId()).toString()); Integer pageSize = PAGE_SIZE.get(options); String pageToken = PAGE_TOKEN.get(options); if (pageSize != null) { builder.setPageSize(pageSize); } if (pageToken != null) { builder.setPageToken(pageToken); } return builder.build(); }
private static ListLogMetricsRequest listMetricsRequest( LoggingOptions serviceOptions, Map<Option.OptionType, ?> options) { ListLogMetricsRequest.Builder builder = ListLogMetricsRequest.newBuilder(); builder.setParent(ProjectName.of(serviceOptions.getProjectId()).toString()); Integer pageSize = PAGE_SIZE.get(options); String pageToken = PAGE_TOKEN.get(options); if (pageSize != null) { builder.setPageSize(pageSize); } if (pageToken != null) { builder.setPageToken(pageToken); } return builder.build(); }
@Override public ApiFuture<Metric> createAsync(MetricInfo metric) { CreateLogMetricRequest request = CreateLogMetricRequest.newBuilder() .setParent(ProjectName.of(getOptions().getProjectId()).toString()) .setMetric(metric.toPb()) .build(); return transform(rpc.create(request), Metric.fromPbFunction(this)); }
@Test public void testAddHandler() { expect(options.getProjectId()).andReturn(PROJECT).anyTimes(); expect(options.getService()).andReturn(logging); logging.setFlushSeverity(Severity.ERROR); expectLastCall().once(); logging.setWriteSynchronicity(Synchronicity.ASYNC); expectLastCall().andVoid(); logging.write(ImmutableList.of(FINEST_ENTRY), DEFAULT_OPTIONS); expectLastCall().once(); replay(options, logging); LoggingHandler handler = new LoggingHandler(LOG_NAME, options, DEFAULT_RESOURCE) { @Override public void close() { // Make close NOOP to avoid mock close exception } }; handler.setLevel(Level.ALL); handler.setFormatter(new TestFormatter()); Logger logger = Logger.getLogger(getClass().getName()); logger.setLevel(Level.ALL); LoggingHandler.addHandler(logger, handler); logger.log(newLogRecord(Level.FINEST, MESSAGE)); }
private static WriteLogEntriesRequest writeLogEntriesRequest( LoggingOptions serviceOptions, Iterable<LogEntry> logEntries, Map<Option.OptionType, ?> options) { String projectId = serviceOptions.getProjectId(); WriteLogEntriesRequest.Builder builder = WriteLogEntriesRequest.newBuilder(); String logName = LOG_NAME.get(options); if (logName != null) { builder.setLogName(ProjectLogName.of(projectId, logName).toString()); } MonitoredResource resource = RESOURCE.get(options); if (resource != null) { builder.setResource(resource.toPb()); } Map<String, String> labels = LABELS.get(options); if (labels != null) { builder.putAllLabels(labels); } builder.addAllEntries(Iterables.transform(logEntries, LogEntry.toPbFunction(projectId))); return builder.build(); }
@Override public ApiFuture<Metric> updateAsync(MetricInfo metric) { UpdateLogMetricRequest request = UpdateLogMetricRequest.newBuilder() .setMetricName( ProjectMetricName.of(getOptions().getProjectId(), metric.getName()).toString()) .setMetric(metric.toPb()) .build(); return transform(rpc.update(request), Metric.fromPbFunction(this)); }
@Test public void testReportFormatError() { expect(options.getProjectId()).andReturn(PROJECT).anyTimes(); expect(options.getService()).andReturn(logging); logging.setFlushSeverity(Severity.ERROR); expectLastCall().once(); logging.setWriteSynchronicity(Synchronicity.ASYNC); expectLastCall().once(); replay(options, logging); Formatter formatter = EasyMock.createStrictMock(Formatter.class); RuntimeException ex = new RuntimeException(); ErrorManager errorManager = EasyMock.createStrictMock(ErrorManager.class); errorManager.error(null, ex, ErrorManager.FORMAT_FAILURE); expectLastCall().once(); LogRecord record = newLogRecord(Level.FINEST, MESSAGE); expect(formatter.format(record)).andThrow(ex); replay(errorManager, formatter); Handler handler = new LoggingHandler(LOG_NAME, options, DEFAULT_RESOURCE); handler.setLevel(Level.ALL); handler.setErrorManager(errorManager); handler.setFormatter(formatter); handler.publish(record); verify(errorManager, formatter); }
@Test public void testPublishCustomResource() { expect(options.getProjectId()).andReturn(PROJECT).anyTimes(); expect(options.getService()).andReturn(logging); logging.setFlushSeverity(Severity.ERROR); expectLastCall().once(); logging.setWriteSynchronicity(Synchronicity.ASYNC); expectLastCall().once(); MonitoredResource resource = MonitoredResource.of("custom", ImmutableMap.<String, String>of()); logging.write( ImmutableList.of(FINEST_ENTRY), WriteOption.logName(LOG_NAME), WriteOption.resource(resource), WriteOption.labels(BASE_SEVERITY_MAP)); expectLastCall().once(); replay(options, logging); Handler handler = new LoggingHandler(LOG_NAME, options, resource); handler.setLevel(Level.ALL); handler.setFormatter(new TestFormatter()); handler.publish(newLogRecord(Level.FINEST, MESSAGE)); }
@Test public void testClose() throws Exception { expect(options.getProjectId()).andReturn(PROJECT).anyTimes(); expect(options.getService()).andReturn(logging); logging.setFlushSeverity(Severity.ERROR); expectLastCall().once(); logging.setWriteSynchronicity(Synchronicity.ASYNC); expectLastCall().once(); logging.write(ImmutableList.of(FINEST_ENTRY), DEFAULT_OPTIONS); expectLastCall().once(); logging.close(); expectLastCall().once(); replay(options, logging); Handler handler = new LoggingHandler(LOG_NAME, options, DEFAULT_RESOURCE); handler.setLevel(Level.ALL); handler.setFormatter(new TestFormatter()); handler.publish(newLogRecord(Level.FINEST, MESSAGE)); handler.close(); handler.close(); } }
public void testFlushLevel() { expect(options.getProjectId()).andReturn(PROJECT).anyTimes(); expect(options.getService()).andReturn(logging); logging.setFlushSeverity(Severity.ERROR); expectLastCall().once(); logging.setWriteSynchronicity(Synchronicity.ASYNC); expectLastCall().once(); logging.setFlushSeverity(Severity.WARNING); expectLastCall().once(); logging.write( ImmutableList.of( FINEST_ENTRY, FINER_ENTRY, FINE_ENTRY, CONFIG_ENTRY, INFO_ENTRY, WARNING_ENTRY), DEFAULT_OPTIONS); expectLastCall().once(); replay(options, logging); LoggingHandler handler = new LoggingHandler(LOG_NAME, options, DEFAULT_RESOURCE); handler.setLevel(Level.ALL); handler.setFlushLevel(Level.WARNING); handler.setFormatter(new TestFormatter()); handler.publish(newLogRecord(Level.FINEST, MESSAGE)); handler.publish(newLogRecord(Level.FINER, MESSAGE)); handler.publish(newLogRecord(Level.FINE, MESSAGE)); handler.publish(newLogRecord(Level.CONFIG, MESSAGE)); handler.publish(newLogRecord(Level.INFO, MESSAGE)); handler.publish(newLogRecord(Level.WARNING, MESSAGE)); }