From 0a22eb5ad6fc435fea4ef5f28e938e8a5fbc1d61 Mon Sep 17 00:00:00 2001 From: Peter Kotula Date: Sun, 5 Jan 2025 11:39:12 +0100 Subject: [PATCH 1/2] optimisation in relation to Trace parse --- .../main/scala/zio/logging/LogFormat.scala | 15 +++++++----- .../zio/logging/LoggerNameExtractor.scala | 23 +++++++++++-------- 2 files changed, 22 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..d26e33fa 100644 --- a/core/shared/src/main/scala/zio/logging/LogFormat.scala +++ b/core/shared/src/main/scala/zio/logging/LogFormat.scala @@ -15,6 +15,7 @@ */ package zio.logging +import zio.internal.stacktracer.Tracer import zio.logging.internal._ import zio.parser.{ Syntax, _ } import zio.{ Cause, Chunk, Config, FiberId, FiberRefs, LogLevel, LogSpan, Trace, ZLogger } @@ -841,9 +842,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 = Tracer.instance.parseOrNull(trace) + if (parsed != null) { + builder.appendText(parsed.file) + } else { + builder.appendText("not-available") } } @@ -868,9 +871,9 @@ object LogFormat { } val traceLine: LogFormat = LogFormat.make { (builder, trace, _, _, _, _, _, _, _) => - trace match { - case Trace(_, _, line) => builder.appendNumeric(line) - case _ => () + val parsed = Tracer.instance.parseOrNull(trace) + if (parsed != 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..a8026e44 100644 --- a/core/shared/src/main/scala/zio/logging/LoggerNameExtractor.scala +++ b/core/shared/src/main/scala/zio/logging/LoggerNameExtractor.scala @@ -15,6 +15,7 @@ */ package zio.logging +import zio.internal.stacktracer.Tracer import zio.{ FiberRefs, Trace } sealed trait LoggerNameExtractor { self => @@ -78,17 +79,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 = Tracer.instance.parseOrNull(trace) + if (parsed != 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 From fc895c93558d653393269fd0e1dc93c3fc7296f3 Mon Sep 17 00:00:00 2001 From: Peter Kotula Date: Sun, 5 Jan 2025 23:29:40 +0100 Subject: [PATCH 2/2] updates based on PR comments --- core/shared/src/main/scala/zio/logging/LogFormat.scala | 9 ++++----- .../src/main/scala/zio/logging/LoggerNameExtractor.scala | 5 ++--- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/core/shared/src/main/scala/zio/logging/LogFormat.scala b/core/shared/src/main/scala/zio/logging/LogFormat.scala index d26e33fa..da16bf38 100644 --- a/core/shared/src/main/scala/zio/logging/LogFormat.scala +++ b/core/shared/src/main/scala/zio/logging/LogFormat.scala @@ -15,7 +15,6 @@ */ package zio.logging -import zio.internal.stacktracer.Tracer import zio.logging.internal._ import zio.parser.{ Syntax, _ } import zio.{ Cause, Chunk, Config, FiberId, FiberRefs, LogLevel, LogSpan, Trace, ZLogger } @@ -842,8 +841,8 @@ object LogFormat { val enclosingClass: LogFormat = LogFormat.make { (builder, trace, _, _, _, _, _, _, _) => - val parsed = Tracer.instance.parseOrNull(trace) - if (parsed != null) { + val parsed = Trace.parseOrNull(trace) + if (parsed ne null) { builder.appendText(parsed.file) } else { builder.appendText("not-available") @@ -871,8 +870,8 @@ object LogFormat { } val traceLine: LogFormat = LogFormat.make { (builder, trace, _, _, _, _, _, _, _) => - val parsed = Tracer.instance.parseOrNull(trace) - if (parsed != null) { + 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 a8026e44..bb85deb8 100644 --- a/core/shared/src/main/scala/zio/logging/LoggerNameExtractor.scala +++ b/core/shared/src/main/scala/zio/logging/LoggerNameExtractor.scala @@ -15,7 +15,6 @@ */ package zio.logging -import zio.internal.stacktracer.Tracer import zio.{ FiberRefs, Trace } sealed trait LoggerNameExtractor { self => @@ -80,8 +79,8 @@ object LoggerNameExtractor { * will have ''example.LivePingService'' as logger name */ val trace: LoggerNameExtractor = FnExtractor { (trace, _, _) => - val parsed = Tracer.instance.parseOrNull(trace) - if (parsed != null) { + val parsed = Trace.parseOrNull(trace) + if (parsed ne null) { val location = parsed.location val last = location.lastIndexOf(".") val name = if (last > 0) {