Skip to content

Commit 035c32a

Browse files
chore: Add examples for logs (#1774)
* Example with the SDK, demonstrating the env var w/console export * Example without the SDK using OTLP * Example without the SDK using the console
1 parent bb51595 commit 035c32a

File tree

3 files changed

+95
-0
lines changed

3 files changed

+95
-0
lines changed

examples/logs_sdk/logs_console.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# frozen_string_literal: true
2+
3+
require 'bundler/inline'
4+
5+
gemfile(true) do
6+
source 'https://rubygems.org'
7+
8+
gem 'opentelemetry-logs-api', path: '../../logs_api'
9+
gem 'opentelemetry-logs-sdk', path: '../../logs_sdk'
10+
end
11+
12+
require 'opentelemetry-logs-sdk'
13+
14+
# Create a LoggerProvider
15+
logger_provider = OpenTelemetry::SDK::Logs::LoggerProvider.new
16+
# Create a batching processor configured to export to the OTLP exporter
17+
processor = OpenTelemetry::SDK::Logs::Export::SimpleLogRecordProcessor.new(OpenTelemetry::SDK::Logs::Export::ConsoleLogRecordExporter.new)
18+
# Add the processor to the LoggerProvider
19+
logger_provider.add_log_record_processor(processor)
20+
# Access a Logger for your library from your LoggerProvider
21+
logger = logger_provider.logger(name: 'my_app_or_gem', version: '0.1.0')
22+
23+
# Use your Logger to emit a log record
24+
logger.on_emit(
25+
timestamp: Time.now,
26+
severity_text: 'INFO',
27+
body: 'Thuja plicata',
28+
attributes: { 'cedar' => true },
29+
)
30+
31+
logger_provider.shutdown
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# frozen_string_literal: true
2+
3+
require 'bundler/inline'
4+
5+
gemfile(true) do
6+
source 'https://rubygems.org'
7+
8+
gem 'opentelemetry-sdk', path: '../../sdk'
9+
gem 'opentelemetry-logs-api', path: '../../logs_api'
10+
gem 'opentelemetry-logs-sdk', path: '../../logs_sdk'
11+
end
12+
13+
require 'opentelemetry-sdk'
14+
require 'opentelemetry-logs-sdk'
15+
16+
# Export logs to the console
17+
ENV['OTEL_LOGS_EXPORTER'] = 'console'
18+
19+
# Configure SDK with defaults, this will apply the OTEL_LOGS_EXPORTER env var
20+
OpenTelemetry::SDK.configure
21+
22+
# Access a Logger for your library from the LoggerProvider configured by the OpenTelemetry API
23+
logger = OpenTelemetry.logger_provider.logger(name: 'my_app_or_gem', version: '0.1.0')
24+
25+
# Use your Logger to emit a log record
26+
logger.on_emit(
27+
timestamp: Time.now,
28+
severity_text: 'INFO',
29+
body: 'Thuja plicata',
30+
attributes: { 'cedar' => true },
31+
)

examples/logs_sdk/logs_otlp.rb

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# frozen_string_literal: true
2+
3+
require 'bundler/inline'
4+
5+
gemfile(true) do
6+
source 'https://rubygems.org'
7+
8+
gem 'opentelemetry-logs-api', path: '../../logs_api'
9+
gem 'opentelemetry-logs-sdk', path: '../../logs_sdk'
10+
gem 'opentelemetry-exporter-otlp-logs', path: '../../exporter/otlp-logs'
11+
end
12+
13+
require 'opentelemetry-logs-sdk'
14+
require 'opentelemetry/exporter/otlp_logs'
15+
16+
# Create a LoggerProvider
17+
logger_provider = OpenTelemetry::SDK::Logs::LoggerProvider.new
18+
# Create a batching processor configured to export to the OTLP exporter
19+
processor = OpenTelemetry::SDK::Logs::Export::BatchLogRecordProcessor.new(OpenTelemetry::Exporter::OTLP::Logs::LogsExporter.new)
20+
# Add the processor to the LoggerProvider
21+
logger_provider.add_log_record_processor(processor)
22+
# Access a Logger for your library from your LoggerProvider
23+
logger = logger_provider.logger(name: 'my_app_or_gem', version: '0.1.0')
24+
25+
# Use your Logger to emit a log record
26+
logger.on_emit(
27+
timestamp: Time.now,
28+
severity_text: 'INFO',
29+
body: 'Thuja plicata',
30+
attributes: { 'cedar' => true },
31+
)
32+
33+
logger_provider.shutdown

0 commit comments

Comments
 (0)