From 70375e14c9c1e0c76906c87c923e23cd7f6118e8 Mon Sep 17 00:00:00 2001 From: Suraj Dhamecha <48670070+suraj-qlogic@users.noreply.github.com> Date: Thu, 2 Apr 2020 02:41:14 +0530 Subject: [PATCH] feat: expose flush() method in LoggingAppender (#62) --- .../cloud/logging/logback/LoggingAppender.java | 10 ++++++++++ .../logging/logback/LoggingAppenderTest.java | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/main/java/com/google/cloud/logging/logback/LoggingAppender.java b/src/main/java/com/google/cloud/logging/logback/LoggingAppender.java index bd24cbdd0..6d5d081bd 100644 --- a/src/main/java/com/google/cloud/logging/logback/LoggingAppender.java +++ b/src/main/java/com/google/cloud/logging/logback/LoggingAppender.java @@ -245,6 +245,16 @@ Logging getLogging() { return logging; } + /** Flushes any pending asynchronous logging writes. */ + public void flush() { + if (!isStarted()) { + return; + } + synchronized (this) { + getLogging().flush(); + } + } + /** Gets the {@link LoggingOptions} to use for this {@link LoggingAppender}. */ protected LoggingOptions getLoggingOptions() { if (loggingOptions == null) { diff --git a/src/test/java/com/google/cloud/logging/logback/LoggingAppenderTest.java b/src/test/java/com/google/cloud/logging/logback/LoggingAppenderTest.java index a36e13517..a3add6f1e 100644 --- a/src/test/java/com/google/cloud/logging/logback/LoggingAppenderTest.java +++ b/src/test/java/com/google/cloud/logging/logback/LoggingAppenderTest.java @@ -305,6 +305,24 @@ public void testAddCustomLoggingEventEnhancers() { assertThat(capturedArgumentMap.get("bar")).isEqualTo("bar"); } + @Test + public void testFlush() { + logging.setFlushSeverity(Severity.ERROR); + Capture> capturedArgument = Capture.newInstance(); + logging.write(capture(capturedArgument), (WriteOption) anyObject(), (WriteOption) anyObject()); + expectLastCall().times(2); + logging.flush(); + replay(logging); + loggingAppender.start(); + Timestamp timestamp = Timestamp.ofTimeSecondsAndNanos(100000, 0); + LoggingEvent firstLoggingEvent = createLoggingEvent(Level.WARN, timestamp.getSeconds()); + LoggingEvent secondLoggingEvent = createLoggingEvent(Level.INFO, timestamp.getSeconds()); + loggingAppender.doAppend(firstLoggingEvent); + loggingAppender.doAppend(secondLoggingEvent); + loggingAppender.flush(); + verify(logging); + } + static class CustomLoggingEventEnhancer1 implements LoggingEventEnhancer { @Override