Current section

Files

Jump to
cyclium lib cyclium log.ex
Raw

lib/cyclium/log.ex

defmodule Cyclium.Log do
@moduledoc """
Structured logging helpers for Cyclium.
Sets process-level Logger metadata with `cyclium_`-prefixed keys so
observability platforms (Datadog, Splunk, etc.) can parse structured fields
from all subsequent log messages in that process.
## Usage
# At process entry points:
Cyclium.Log.set_context(cyclium_actor_id: actor_id)
# Metadata persists for all Logger calls in the process.
"""
require Logger
@context_keys [
:cyclium_actor_id,
:cyclium_episode_id,
:cyclium_expectation_id,
:cyclium_workflow_id,
:cyclium_instance_id,
:cyclium_step_id,
:cyclium_domain
]
@doc """
Sets Logger metadata for the current process context.
Only `cyclium_`-prefixed keys are accepted.
"""
def set_context(fields) when is_list(fields) do
metadata = Keyword.take(fields, @context_keys)
Logger.metadata(metadata)
end
end