LogIt++
Header-only, macro-first C++ logging library
Loading...
Searching...
No Matches
example_logit_otlp_http.cpp
Go to the documentation of this file.
1#include <logit.hpp>
2
3#include <cstdlib>
4#include <string>
5
6namespace {
7
8std::string env_or(const char* name, const char* fallback) {
9 const char* value = std::getenv(name);
10 return (value && *value) ? std::string(value) : std::string(fallback);
11}
12
13} // namespace
14
15int main() {
16#ifndef LOGIT_WITH_OTLP
18 LOGIT_WARN("OTLP example requires LOGIT_WITH_OTLP=ON");
19 LOGIT_WAIT();
20 return 0;
21#else
23 config.host = env_or("LOGIT_OTLP_ENDPOINT", "http://localhost:4318");
24 config.path = env_or("LOGIT_OTLP_PATH", "/v1/logs");
25 config.format.service_name = env_or("LOGIT_SERVICE_NAME", "checkout-service");
26 config.format.service_namespace = "examples";
27 config.format.service_instance_id = "local-dev";
28 config.format.deployment_environment = env_or("LOGIT_ENVIRONMENT", "dev");
29 config.max_queue_size = 1024;
30 config.max_batch_size = 64;
31 config.max_in_flight_requests = 2;
32 config.export_interval_ms = 250;
33 config.request_timeout_sec = 3;
34 config.retry_attempts = 1;
35 config.retry_delay_ms = 100;
36 config.cancel_on_shutdown = false;
37
38#if defined(LOGIT_HAS_ZSTD)
40 config.compression_level = 3;
41#elif defined(LOGIT_HAS_ZLIB)
43 config.compression_level = 6;
44#endif
45
48 (config),
50#ifdef LOGIT_WITH_CONTEXT
51 ("[%l] trace=%K{trace_id} span=%K{span_id} %v")
52#else
53 ("[%l] %v")
54#endif
55 );
56
57#ifdef LOGIT_WITH_CONTEXT
58 LOGIT_MDC_PUT("trace_id", "7b3f1c8a2e914a99");
59 LOGIT_MDC_PUT("span_id", "checkout-001");
60 LOGIT_NDC_PUSH("checkout");
61#endif
62
63 LOGIT_INFO("OTLP logger started");
64 LOGIT_WARN("payment provider latency is above threshold");
65
66 {
67#ifdef LOGIT_WITH_CONTEXT
68 LOGIT_NDC_GUARD("submit-order");
69#endif
70 LOGIT_ERROR("order export failed; collector will count failed exports if HTTP fails");
71 }
72
73 LOGIT_WAIT();
74#ifdef LOGIT_WITH_CONTEXT
77#endif
79 return 0;
80#endif
81}
Exports logs to an OTLP/HTTP endpoint using kurlyk.
A simple log formatter that formats log messages based on a user-defined pattern.
#define LOGIT_NDC_CLEAR()
#define LOGIT_MDC_PUT(key, value)
#define LOGIT_NDC_PUSH(value)
#define LOGIT_NDC_GUARD(value)
#define LOGIT_MDC_CLEAR()
#define LOGIT_ADD_CONSOLE_DEFAULT()
Macro for adding the default console logger.
#define LOGIT_WAIT()
Macro for waiting for all asynchronous loggers to finish processing.
#define LOGIT_ERROR(...)
#define LOGIT_INFO(...)
#define LOGIT_SHUTDOWN()
Macro for shutting down logger system.
#define LOGIT_WARN(...)
#define LOGIT_ADD_LOGGER(logger_type, logger_args, formatter_type, formatter_args)
Macro for adding a logger with a specific formatter.
Unified umbrella header for the LogIt++ library.
std::string env_or(const char *name, const char *fallback)
std::string service_namespace
Optional service.namespace resource attribute.
std::string service_instance_id
Optional service.instance.id resource attribute.
std::string deployment_environment
Optional deployment.environment.name resource attribute.
std::string service_name
service.name resource attribute.