blob: 399e2c68c78cade2aed51f6e3b75d27846645ec8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package xyz.driver.core.trace
import com.google.cloud.trace.v1.consumer.FlushableTraceConsumer
import com.google.devtools.cloudtrace.v1.Traces
import com.typesafe.scalalogging.Logger
import scala.util.control.NonFatal
/**
* ExceptionLoggingFlushableTraceConsumer simply wraps a flushable trace consumer and catches/logs any exceptions
* @param traceConsumer the flusable trace consumer to wrap
* @param log where to log any exceptions
*/
class ExceptionLoggingFlushableTraceConsumer(traceConsumer: FlushableTraceConsumer, log: Logger)
extends FlushableTraceConsumer {
private val flushableTraceConsumer = traceConsumer
private def exceptionLogger(exception: Throwable): Unit =
log.error(s"Encountered exception logging to google $exception")
override def receive(trace: Traces): Unit =
try {
flushableTraceConsumer.receive(trace)
} catch {
case NonFatal(e) => exceptionLogger(e)
}
override def flush(): Unit =
try {
flushableTraceConsumer.flush()
} catch {
case NonFatal(e) => exceptionLogger(e)
}
}
|