Skip to content

Commit 7ce2d7c

Browse files
committed
Make logging of byte counts conditional
1 parent a6e45c7 commit 7ce2d7c

2 files changed

Lines changed: 16 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ The `Unreleased` section name is replaced by the expected version of next releas
1212
### Changed
1313

1414
- Remove explicit `net461` handling; minimum target now `netstandard 2.1` / `net5.0` [#310](https://github.com/jet/equinox/pull/310)
15+
- `CosmosStore`: Switch to natively using `JsonElement` event bodies [#305](https://github.com/jet/equinox/pull/305) :pray: [@ylibrach](https://github.com/ylibrach)
16+
- `CosmosStore`: Switch to natively using `System.Text.Json` for serialization of all `Microsoft.Azure.Cosmos` round-trips [#305](https://github.com/jet/equinox/pull/305) :pray: [@ylibrach](https://github.com/ylibrach)
17+
- `CosmosStore`: Only log `bytes` when log level is `Debug` [#305](https://github.com/jet/equinox/pull/305)
1518

1619
### Removed
1720
### Fixed

src/Equinox.CosmosStore/CosmosStore.fs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,10 @@ module Log =
230230
let internal event (value : Metric) (log : ILogger) =
231231
let enrich (e : Serilog.Events.LogEvent) =
232232
e.AddPropertyIfAbsent(Serilog.Events.LogEventProperty(PropertyTag, Serilog.Events.ScalarValue(value)))
233-
log.ForContext({ new Serilog.Core.ILogEventEnricher with member _.Enrich(evt, _) = enrich evt })
233+
log.ForContext({ new Serilog.Core.ILogEventEnricher with member __.Enrich(evt,_) = enrich evt })
234234
let internal (|BlobLen|) (x : EventBody) = if x.ValueKind = JsonValueKind.Null then 0 else x.GetRawText().Length
235-
let internal (|EventLen|) (x : #IEventData<_>) = let BlobLen bytes, BlobLen metaBytes = x.Data, x.Meta in bytes + metaBytes + 80
236-
let internal (|BatchLen|) = Seq.sumBy (|EventLen|)
235+
let internal eventLen (x: #IEventData<_>) = let BlobLen bytes, BlobLen metaBytes = x.Data, x.Meta in bytes + metaBytes + 80
236+
let internal batchLen = Seq.sumBy eventLen
237237
let internal (|SerilogScalar|_|) : Serilog.Events.LogEventPropertyValue -> obj option = function
238238
| :? Serilog.Events.ScalarValue as x -> Some x.Value
239239
| _ -> None
@@ -479,11 +479,12 @@ module internal Sync =
479479
let private logged (container, stream) (maxEventsInTip, maxStringifyLen) (exp : SyncExp, req : Tip) (log : ILogger)
480480
: Async<Result> = async {
481481
let! t, (ru, result) = run (container, stream) (maxEventsInTip, maxStringifyLen) (exp, req) |> Stopwatch.Time
482-
let Log.BatchLen bytes, count = Enum.Events req, req.e.Length
482+
let verbose = log.IsEnabled Serilog.Events.LogEventLevel.Debug
483+
let count, bytes = req.e.Length, if verbose then Enum.Events req |> Log.batchLen else 0
483484
let log =
484-
let inline mkMetric ru : Log.Measurement = { database = container.Database.Id; container = container.Id; stream = stream; interval = t; bytes = bytes; count = count; ru = ru }
485+
let inline mkMetric ru : Log.Measurement =
486+
{ database = container.Database.Id; container = container.Id; stream = stream; interval = t; bytes = bytes; count = count; ru = ru }
485487
let inline propConflict log = log |> Log.prop "conflict" true |> Log.prop "eventTypes" (Seq.truncate 5 (seq { for x in req.e -> x.c }))
486-
let verbose = log.IsEnabled Events.LogEventLevel.Debug
487488
if verbose then log |> Log.propEvents (Enum.Events req) |> Log.propDataUnfolds req.u else log
488489
|> match exp with
489490
| SyncExp.Etag et -> Log.prop "expectedEtag" et
@@ -612,7 +613,7 @@ module internal Tip =
612613
(log 0 0 Log.Metric.TipNotFound).Information("EqxCosmos {action:l} {stream} {res} {ms}ms rc={ru}", "Tip", stream, 404, (let e = t.Elapsed in e.TotalMilliseconds), ru)
613614
| ReadResult.Found tip ->
614615
let log =
615-
let Log.BatchLen bytes, count = Enum.Unfolds tip.u, tip.u.Length
616+
let count, bytes = tip.u.Length, if verbose then Enum.Unfolds tip.u |> Log.batchLen else 0
616617
log bytes count Log.Metric.Tip
617618
let log = if verbose then log |> Log.propDataUnfolds tip.u else log
618619
let log = match maybePos with Some p -> log |> Log.propStartPos p |> Log.propStartEtag p | None -> log
@@ -675,10 +676,10 @@ module internal Query =
675676
Enum.Events(b, ?minIndex = minIndex, ?maxIndex = maxIndex)
676677
|> if direction = Direction.Backward then System.Linq.Enumerable.Reverse else id
677678
let events = batches |> Seq.collect unwrapBatch |> Array.ofSeq
678-
let Log.BatchLen bytes, count = events, events.Length
679+
let verbose = log.IsEnabled Events.LogEventLevel.Debug
680+
let count, bytes = events.Length, if verbose then events |> Log.batchLen else 0
679681
let reqMetric : Log.Measurement = { database = container.Database.Id; container = container.Id; stream = streamName; interval = t; bytes = bytes; count = count; ru = ru }
680682
let log = let evt = Log.Metric.QueryResponse (direction, reqMetric) in log |> Log.event evt
681-
let verbose = log.IsEnabled Events.LogEventLevel.Debug
682683
let log = if verbose then log |> Log.propEvents events else log
683684
let index = if count = 0 then Nullable () else Nullable <| Seq.min (seq { for x in batches -> x.i })
684685
(log|> Log.prop "bytes" bytes
@@ -690,7 +691,8 @@ module internal Query =
690691
events, maybePosition, ru
691692

692693
let private logQuery direction queryMaxItems (container : Container, streamName) interval (responsesCount, events : ITimelineEvent<EventBody>[]) n (ru : float) (log : ILogger) =
693-
let Log.BatchLen bytes, count = events, events.Length
694+
let verbose = log.IsEnabled Events.LogEventLevel.Debug
695+
let count, bytes = events.Length, if verbose then events |> Log.batchLen else 0
694696
let reqMetric : Log.Measurement = { database = container.Database.Id; container = container.Id; stream = streamName; interval = interval; bytes = bytes; count = count; ru = ru }
695697
let evt = Log.Metric.Query (direction, responsesCount, reqMetric)
696698
let action = match direction with Direction.Forward -> "QueryF" | Direction.Backward -> "QueryB"
@@ -702,7 +704,7 @@ module internal Query =
702704
let mutable used, dropped = 0, 0
703705
let mutable found = false
704706
for x in xs do
705-
let (Log.EventLen bytes) = x
707+
let bytes = Log.eventLen x
706708
if found then dropped <- dropped + bytes
707709
else used <- used + bytes
708710
if x.Index = stopIndex then found <- true

0 commit comments

Comments
 (0)