Skip to main content
Version: ZIO 2.x

Logger Context and Annotations

The logContext fiber reference is used to store typed, structured log annotations, which can be utilized by backends to enrich log messages.

Because logContext is an ordinary zio.FiberRef, it may be get, set, and updated like any other fiber reference. However, the idiomatic way to interact with logContext is by using zio.logging.LogAnnotation.

For example:

myResponseHandler(request) @@ LogAnnotation.UserId(request.userId)

This code would add the structured log annotation LogAnnotation.UserId to all log messages emitted by the myResponseHandler(request) effect.

The user of the library is allowed to add a custom LogAnnotation:

import zio.logging.LogAnnotation

val customLogAnnotation = LogAnnotation[Int]("custom_annotation", _ + _, _.toString)