rust-telemetry 1.3.0

Observability helpers originally developed for internal use at Famedly
# SPDX-FileCopyrightText: 2025 Famedly GmbH (info@famedly.com)
#
# SPDX-License-Identifier: Apache-2.0
$schema: https://json-schema.org/draft/2020-12/schema
title: OtelConfig
description: OpenTelemetry configuration
type: object
properties:
  exporter:
    description: Configurations for exporting traces, metrics and logs
    anyOf:
    - $ref: '#/$defs/ExporterConfig'
    - type: 'null'
  stdout:
    description: Enables logs on stdout
    anyOf:
    - $ref: '#/$defs/StdoutLogsConfig'
    - type: 'null'
$defs:
  ExporterConfig:
    description: Configuration for exporting OpenTelemetry data
    type: object
    properties:
      endpoint:
        description: gRPC endpoint for exporting using OTELP
        $ref: '#/$defs/OtelUrl'
      logs:
        description: Logs exporting config
        anyOf:
        - $ref: '#/$defs/ProviderConfig'
        - type: 'null'
      metrics:
        description: Metrics exporting config
        anyOf:
        - $ref: '#/$defs/ProviderConfig'
        - type: 'null'
      resource_metadata:
        description: |-
          Key value mapping of the OTEL resource. See [Resource semantic conventions](https://opentelemetry.io/docs/specs/semconv/resource/) for what can be set here.
          Only string values are supported now.
          This crate sets `service.name` and `service.version` by default.
        type: object
        additionalProperties:
          type: string
        default: {}
      traces:
        description: Traces exporting config
        anyOf:
        - $ref: '#/$defs/ProviderConfig'
        - type: 'null'
  LevelFilter:
    type: string
    enum:
    - off
    - error
    - warn
    - info
    - debug
    - trace
  OtelUrl:
    description: Wrapper over [`Url`] with [`Default`] implementation `http://localhost:4317`
    type: string
    format: uri
  ProviderConfig:
    description: Provider configuration for OpenTelemetry export
    type: object
    properties:
      dependencies_levels:
        description: Levels for the dependencies
        type: object
        additionalProperties:
          $ref: '#/$defs/LevelFilter'
        default: {}
      enabled:
        description: Enables provider
        type: boolean
        default: false
      general_level:
        description: General level
        $ref: '#/$defs/LevelFilter'
        default: info
      level:
        description: Level for the crate
        $ref: '#/$defs/LevelFilter'
        default: info
  StdoutLogsConfig:
    description: Stdout logs configuration
    type: object
    properties:
      dependencies_levels:
        description: Level for the dependencies
        type: object
        additionalProperties:
          $ref: '#/$defs/LevelFilter'
        default: {}
      enabled:
        description: Enables the stdout logs
        type: boolean
        default: true
      general_level:
        description: General level
        $ref: '#/$defs/LevelFilter'
        default: info
      json_output:
        description: Output structured JSON logs
        type: boolean
        default: false
      level:
        description: Level for the crate
        $ref: '#/$defs/LevelFilter'
        default: info