=encoding UTF-8 =head1 NAME OpenTelemetry::Exporter::OTLP::Logs - An OpenTelemetry Protocol log record exporter =head1 SYNOPSIS use OpenTelemetry; use OpenTelemetry::Exporter::OTLP::Logs; use OpenTelemetry::SDK::Logs::LogRecord::Processor::Batch; # Use it with a log processor my $processor = OpenTelemetry::SDK::Logs::LogRecord::Processor::Batch->new( exporter => OpenTelemetry::Exporter::OTLP::Logs->new( ... ), ); # Register it with the OpenTelemetry logger provider OpenTelemetry->logger_provider->add_log_record_processor($processor); =head1 DESCRIPTION This module provides an exporter that extends L<OpenTelemetry::Exporter::OTLP> to read the default values for the endpoint, timeout, compression, and headers from the environment variables specific to logs. All the rest of the behaviours are those described in L<OpenTelemetry::Exporter::OTLP>, so please refer to the documentation of that module for details. For a similar exporter that can be used for exporting traces, please see L<OpenTelemetry::Exporter::OTLP::Traces>. =head1 METHODS This class extends L<OpenTelemetry::Exporter::OTLP>, but modifies the sources that are used for some default values in the constructor. This documentation only describes those differences. For details on Those differences are documented below. For more details on the meaning of those parameters, or in any other parts of the API of the OTLP exporter, please to the documentation of the parent class. =head2 new $exporter = OpenTelemetry::Exporter::OTLP->new( certificate => $file_path, # optional client_certificate => $file_path, # optional client_key => $file_path, # optional compression => $compression, # optional endpoint => $url, # optional headers => \%headers || $string, # optional protocol => $protocol, # optional timeout => $seconds, # optional ); Behaves like the constructor of L<OpenTelemetry::Exporter::OTLP>, but uses different sources for their default values, as described below. =over =item certificate The default will be read from L<"OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_LOGS_CERTIFICATE>, or L<"OTEL_EXPORTER_OTLP_CERTIFICATE"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_CERTIFICATE> if that variable is not set. If none of those values are set, this will remain undefined. =item client_certificate The default value will be read from L<"OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_LOGS_CLIENT_CERTIFICATE>, or L<"OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_CLIENT_CERTIFICATE> if that variable is not set. If none of those values are set, this will remain undefined. =item client_key The default value will be read from L<"OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_LOGS_CLIENT_KEY>, or L<"OTEL_EXPORTER_OTLP_CLIENT_KEY"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_CLIENT_KEY> if that variable is not set. If none of those values are set, this will remain undefined. =item compression The default value will be read from the L<"OTEL_EXPORTER_OTLP_LOGS_COMPRESSION"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_LOGS_COMPRESSION> environment variable, or L<"OTEL_EXPORTER_OTLP_COMPRESSION"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_COMPRESSION> if the first one is not set. If none of these values is set, the default will depend on availability. If L<Compress::Zlib> is installed, the compression will default to "gzip", otherwise none will be used. =item endpoint The default value will be read from L<"OTEL_EXPORTER_OTLP_LOGS_ENDPOINT"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_LOGS_ENDPOINT>. If this is set, it will be used as-is. If that value was not set, the "/v1/traces" path will be added to a base URL read from L<"OTEL_EXPORTER_OTLP_ENDPOINT"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_ENDPOINT>. If this environment variable was not set, this base URL will default to "http://localhost:4318". =item headers The default value will be read from the L<"OTEL_EXPORTER_OTLP_LOGS_HEADERS"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_LOGS_HEADERS> environment variable, or L<"OTEL_EXPORTER_OTLP_HEADERS"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_HEADERS> if the first one is not set. If none of these is set, it will default to an empty hash. =item protocol No changes from the parent class. =item timeout The default value will be read from L<"OTEL_EXPORTER_OTLP_LOGS_TIMEOUT"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_LOGS_TIMEOUT>, or from L<"OTEL_EXPORTER_OTLP_TIMEOUT"|OpenTelemetry::SDK/OTEL_EXPORTER_OTLP_TIMEOUT> if that variable is not set. If none of these values is set, this will default to 10. =back =head1 SEE ALSO =over =item L<OpenTelemetry::Exporter::OTLP> =item L<OpenTelemetry::Exporter::OTLP::Traces> =back =head1 ACKNOWLEDGEMENTS Special thanks to L<CV-Library Ltd.|https://cv-library.co.uk> for their support in the development of this library. =head1 COPYRIGHT AND LICENSE This software is copyright (c) 2024 by José JoaquÃn Atria. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.