@Override LogEntry parse(String... args) throws Exception { if (args.length >= 3) { if ((args.length & 0x1) != 0x1) { throw new IllegalArgumentException("Labels must be a list of key-value pairs."); } String logName = args[0]; Severity severity = Severity.valueOf(args[1].toUpperCase()); String message = args[2]; Map<String, String> labels = Maps.newHashMapWithExpectedSize((args.length - 3) / 2); for (int i = 3; i < args.length; i += 2) { labels.put(args[i], args[i + 1]); } return LogEntry.newBuilder(StringPayload.of(message)) .setLogName(logName) .setSeverity(severity) .setLabels(labels) .build(); } else { throw new IllegalArgumentException("Missing required arguments."); } }
@Test public void testFlushLevelConfigUpdatesLoggingFlushSeverity() { LogEntry logEntry = LogEntry.newBuilder(StringPayload.of("this is a test")) .setTimestamp(100000L) .setSeverity(Severity.WARNING) .setLabels( new ImmutableMap.Builder<String, String>() .put("levelName", "WARN") .put("levelValue", String.valueOf(30000L)) .build()) .build(); logging.setFlushSeverity(Severity.WARNING); Capture<Iterable<LogEntry>> capturedArgument = Capture.newInstance(); logging.write(capture(capturedArgument), (WriteOption) anyObject(), (WriteOption) anyObject()); replay(logging); Timestamp timestamp = Timestamp.ofTimeSecondsAndNanos(100000, 0); LoggingEvent loggingEvent = createLoggingEvent(Level.WARN, timestamp.getSeconds()); // error is the default, updating to warn for test loggingAppender.setFlushLevel(Level.WARN); loggingAppender.start(); loggingAppender.doAppend(loggingEvent); verify(logging); assertThat(capturedArgument.getValue().iterator().hasNext()).isTrue(); assertThat(capturedArgument.getValue().iterator().next()).isEqualTo(logEntry); }
@Test public void testEnhancersAddCorrectLabelsToLogEntries() { LogEntry logEntry = LogEntry.newBuilder(StringPayload.of("this is a test")) .setTimestamp(100000L) .setSeverity(Severity.WARNING) .setLabels( new ImmutableMap.Builder<String, String>() .put("levelName", "WARN") .put("levelValue", String.valueOf(30000L)) .put("test-label-1", "test-value-1") .put("test-label-2", "test-value-2") .build()) .build(); logging.setFlushSeverity(Severity.ERROR); Capture<Iterable<LogEntry>> capturedArgument = Capture.newInstance(); logging.write(capture(capturedArgument), (WriteOption) anyObject(), (WriteOption) anyObject()); expectLastCall().once(); replay(logging); loggingAppender.addEnhancer("com.example.enhancers.TestLoggingEnhancer"); loggingAppender.addEnhancer("com.example.enhancers.AnotherTestLoggingEnhancer"); loggingAppender.start(); Timestamp timestamp = Timestamp.ofTimeSecondsAndNanos(100000, 0); LoggingEvent loggingEvent = createLoggingEvent(Level.WARN, timestamp.getSeconds()); loggingAppender.doAppend(loggingEvent); verify(logging); assertThat(capturedArgument.getValue().iterator().hasNext()).isTrue(); assertThat(capturedArgument.getValue().iterator().next()).isEqualTo(logEntry); }
static LogEntry fromPb(com.google.logging.v2.LogEntry entryPb) { Builder builder = newBuilder(Payload.fromPb(entryPb)); builder.setLabels(entryPb.getLabelsMap()); builder.setSeverity(Severity.fromPb(entryPb.getSeverity())); if (!entryPb.getLogName().equals("")) {
.setInsertId(INSERT_ID) .setHttpRequest(HTTP_REQUEST) .setLabels(LABELS) .setOperation(OPERATION) .setTrace(TRACE)
static LogEntry fromPb(com.google.logging.v2.LogEntry entryPb) { Builder builder = newBuilder(Payload.fromPb(entryPb)); builder.setLabels(entryPb.getLabelsMap()); builder.setSeverity(Severity.fromPb(entryPb.getSeverity())); if (!entryPb.getLogName().equals("")) {
.setTimestamp(100000L) .setSeverity(Severity.ERROR) .setLabels( new ImmutableMap.Builder<String, String>() .put("levelName", "ERROR")