Julewire Core

julewire-core is the synchronous structured logging runtime behind Julewire.

It builds provider-neutral records, execution context, propagated carry, non-propagated attributes, final summaries, processor chains, and synchronous direct outputs. It does not know about app frameworks, privacy policy, provider schemas, async queues, or delivery.

Install

gem "julewire-core"

Quickstart

Julewire.configure do |config|
  config.destinations.use(:default, output: $stdout)
end

Julewire.with_execution(type: :job, id: "job-1") do
  Julewire.context.add(tenant_id: "tenant-1")
  Julewire.summary.increment(:records_seen)

  Julewire.measure(:process_record) do
    Julewire.emit("processed record", id: 123)
  end
end

By default, direct output is newline-delimited JSON.

Field Bags

Bag Use it for Propagates? Default JSON?
context queryable facts copied onto records in the current scope yes yes
carry hidden forwarding metadata for integrations and formatters yes no
neutral provider-neutral formatter-coordination facts no no
attributes integration and application namespaces no yes
summary final-only counters, timings, and completion facts no summary only
labels operator-safe routing/grouping metadata no yes
metrics numeric measurements such as duration no yes

Docs

Runtime Promise

Julewire is best-effort logging infrastructure. StandardError failures inside Julewire's own normalization, processing, formatting, encoding, and output path are contained so application code keeps running.

Core stays synchronous. Custom destinations own async queues, files, fanout, batching, retries, and delivery health.