From 0a8fa19cdd16178064c0ad79db8c3e4f0fcdc63f Mon Sep 17 00:00:00 2001 From: Peter Kotula Date: Mon, 6 Jan 2025 00:01:44 +0100 Subject: [PATCH] optimisation in relation to Trace parse (#924) --- .../main/scala/zio/logging/LogFormat.scala | 14 +++++++----- .../zio/logging/LoggerNameExtractor.scala | 22 ++++++++++--------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/core/shared/src/main/scala/zio/logging/LogFormat.scala b/core/shared/src/main/scala/zio/logging/LogFormat.scala index 369c2708..da16bf38 100644 --- a/core/shared/src/main/scala/zio/logging/LogFormat.scala +++ b/core/shared/src/main/scala/zio/logging/LogFormat.scala @@ -841,9 +841,11 @@ object LogFormat { val enclosingClass: LogFormat = LogFormat.make { (builder, trace, _, _, _, _, _, _, _) => - trace match { - case Trace(_, file, _) => builder.appendText(file) - case _ => builder.appendText("not-available") + val parsed = Trace.parseOrNull(trace) + if (parsed ne null) { + builder.appendText(parsed.file) + } else { + builder.appendText("not-available") } } @@ -868,9 +870,9 @@ object LogFormat { } val traceLine: LogFormat = LogFormat.make { (builder, trace, _, _, _, _, _, _, _) => - trace match { - case Trace(_, _, line) => builder.appendNumeric(line) - case _ => () + val parsed = Trace.parseOrNull(trace) + if (parsed ne null) { + builder.appendNumeric(parsed.line) } } diff --git a/core/shared/src/main/scala/zio/logging/LoggerNameExtractor.scala b/core/shared/src/main/scala/zio/logging/LoggerNameExtractor.scala index f4ff3fcc..bb85deb8 100644 --- a/core/shared/src/main/scala/zio/logging/LoggerNameExtractor.scala +++ b/core/shared/src/main/scala/zio/logging/LoggerNameExtractor.scala @@ -78,17 +78,19 @@ object LoggerNameExtractor { * trace with value ''example.LivePingService.ping(PingService.scala:22)'' * will have ''example.LivePingService'' as logger name */ - val trace: LoggerNameExtractor = FnExtractor((trace, _, _) => - trace match { - case Trace(location, _, _) => - val last = location.lastIndexOf(".") - val name = if (last > 0) { - location.substring(0, last) - } else location - Some(name) - case _ => None + val trace: LoggerNameExtractor = FnExtractor { (trace, _, _) => + val parsed = Trace.parseOrNull(trace) + if (parsed ne null) { + val location = parsed.location + val last = location.lastIndexOf(".") + val name = if (last > 0) { + location.substring(0, last) + } else location + Some(name) + } else { + None } - ) + } /** * Extractor which take logger name from annotation