diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..35eb1ddf
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 00000000..a4a692eb
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,197 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {
+ "keyToString": {
+ "RunOnceActivity.OpenProjectViewOnStart": "true",
+ "RunOnceActivity.ShowReadmeOnStart": "true",
+ "RunOnceActivity.cidr.known.project.marker": "true",
+ "cidr.known.project.marker": "true",
+ "dart.analysis.tool.window.visible": "false",
+ "last_opened_file_path": "/Users/rushabhshah/Downloads/Flutter OTeL/opentelemetry-dart/lib/src/sdk/proto/opentelemetry/proto/collector/logs/v1",
+ "show.migrate.to.gradle.popup": "false"
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1714635632768
+
+
+ 1714635632768
+
+
+
+
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/Logs/expoters/simple_log_record_processor.dart
+ 25
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/Logs/expoters/log_collector_exporter.dart
+ 67
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/trace/span_processors/simple_processor.dart
+ 31
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/trace/span_processors/simple_processor.dart
+ 19
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/Logs/expoters/log_collector_exporter.dart
+ 73
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/trace/exporters/collector_exporter.dart
+ 239
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/trace/exporters/collector_exporter.dart
+ 240
+
+
+
+ file://$PROJECT_DIR$/test/unit/sdk/Logs/log_expoter_test.dart
+ 128
+
+
+
+ file://$PROJECT_DIR$/test/unit/sdk/exporters/collector_exporter_test.dart
+ 166
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/Logs/expoters/log_collector_exporter.dart
+ 51
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/Logs/expoters/log_collector_exporter.dart
+ 49
+
+
+
+ file://$PROJECT_DIR$/test/unit/sdk/Logs/log_expoter_test.dart
+ 188
+
+
+
+ file://$PROJECT_DIR$/test/unit/sdk/Logs/log_expoter_test.dart
+ 178
+
+
+
+ file://$PROJECT_DIR$/test/unit/sdk/Logs/log_expoter_test.dart
+ 190
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/Logs/expoters/log_collector_exporter.dart
+ 33
+
+
+
+ file://$PROJECT_DIR$/lib/src/sdk/trace/exporters/collector_exporter.dart
+ 48
+
+
+
+
+
+
\ No newline at end of file
diff --git a/lib/api.dart b/lib/api.dart
index 17c57b8a..1d441fd9 100644
--- a/lib/api.dart
+++ b/lib/api.dart
@@ -33,3 +33,11 @@ export 'src/api/trace/trace_id.dart' show TraceId;
export 'src/api/trace/trace_state.dart' show TraceState;
export 'src/api/trace/tracer.dart' show Tracer;
export 'src/api/trace/tracer_provider.dart' show TracerProvider;
+export 'src/api//Logs/event_builder.dart';
+export 'src/api/Logs/log_record_builder.dart';
+export 'src/api/Logs/logger_builder.dart';
+export 'src/api/Logs/logger_provider.dart';
+export 'src/api/Logs/logger.dart';
+export 'src/api/Logs/severity.dart';
+export 'src/api/Logs/readable_log_record.dart';
+export 'src/api/Logs/logg_tracer.dart';
diff --git a/lib/sdk.dart b/lib/sdk.dart
index 3e94fa4a..3dd254ef 100644
--- a/lib/sdk.dart
+++ b/lib/sdk.dart
@@ -28,3 +28,11 @@ export 'src/sdk/trace/span_processors/batch_processor.dart'
export 'src/sdk/trace/span_processors/simple_processor.dart'
show SimpleSpanProcessor;
export 'src/sdk/trace/tracer_provider.dart' show TracerProviderBase;
+export 'src/sdk/Logs/expoters/log_record_expoter.dart';
+export 'src/sdk/Logs/expoters/log_collector_exporter.dart';
+
+export 'src/sdk/Logs/expoters/log_record_processor.dart';
+export 'src/sdk/Logs/expoters/simple_log_record_processor.dart';
+export 'src/sdk/Logs/logger_provider.dart';
+export 'src/sdk/Logs/log_limits.dart';
+export 'src/sdk/Logs/logg.dart';
diff --git a/lib/src/api/Logs/event_builder.dart b/lib/src/api/Logs/event_builder.dart
new file mode 100644
index 00000000..2410aa74
--- /dev/null
+++ b/lib/src/api/Logs/event_builder.dart
@@ -0,0 +1,7 @@
+import 'package:opentelemetry/api.dart';
+
+
+abstract class EventBuilder extends LogRecordBuilder {
+ EventBuilder setData(Map attributes);
+}
+
diff --git a/lib/src/api/Logs/log_record_builder.dart b/lib/src/api/Logs/log_record_builder.dart
new file mode 100644
index 00000000..6a8fe333
--- /dev/null
+++ b/lib/src/api/Logs/log_record_builder.dart
@@ -0,0 +1,13 @@
+
+
+import 'package:opentelemetry/api.dart';
+import 'package:opentelemetry/src/api/Logs/severity.dart';
+abstract class LogRecordBuilder {
+ LogRecordBuilder setTimestamp(DateTime timestamp);
+ LogRecordBuilder setObservedTimestamp(DateTime observed);
+ LogRecordBuilder setSpanContext(SpanContext context);
+ LogRecordBuilder setSeverity(Severity severity);
+ LogRecordBuilder setBody(dynamic body);
+ LogRecordBuilder setAttributes(Map attributes);
+ void emit();
+}
diff --git a/lib/src/api/Logs/logg_tracer.dart b/lib/src/api/Logs/logg_tracer.dart
new file mode 100644
index 00000000..f54bc930
--- /dev/null
+++ b/lib/src/api/Logs/logg_tracer.dart
@@ -0,0 +1,16 @@
+import '../../../api.dart' as api;
+import 'package:fixnum/fixnum.dart';
+abstract class LogTracer {
+ /// Starts a new [api.Span] without setting it as the current span in this
+ /// tracer's context.
+ ///
+ ///
+ api.ReadableLogRecord setLog(
+ DateTime? observedTimestamp,
+ String name,
+ {api.Context? context,
+ api.SpanKind kind = api.SpanKind.internal,
+ List attributes = const [],
+ List links = const [],
+ Int64? startTime});
+}
diff --git a/lib/src/api/Logs/logger.dart b/lib/src/api/Logs/logger.dart
new file mode 100644
index 00000000..af91b939
--- /dev/null
+++ b/lib/src/api/Logs/logger.dart
@@ -0,0 +1,6 @@
+
+import 'package:opentelemetry/api.dart';
+
+abstract class Logger {
+ LogRecordBuilder logRecordBuilder();
+}
\ No newline at end of file
diff --git a/lib/src/api/Logs/logger_builder.dart b/lib/src/api/Logs/logger_builder.dart
new file mode 100644
index 00000000..0968a012
--- /dev/null
+++ b/lib/src/api/Logs/logger_builder.dart
@@ -0,0 +1,8 @@
+import 'package:opentelemetry/api.dart';
+
+abstract class LoggerBuilder {
+ LoggerBuilder setSchemaUrl(String schemaUrl);
+ LoggerBuilder setInstrumentationVersion(String instrumentationVersion);
+ LoggerBuilder setIncludeTraceContext(bool includeTraceContext);
+ LoggerBuilder setAttributes(Map attributes);
+}
\ No newline at end of file
diff --git a/lib/src/api/Logs/logger_provider.dart b/lib/src/api/Logs/logger_provider.dart
new file mode 100644
index 00000000..3149ed2f
--- /dev/null
+++ b/lib/src/api/Logs/logger_provider.dart
@@ -0,0 +1,17 @@
+import 'package:opentelemetry/api.dart';
+
+
+
+abstract class LoggerProvider {
+ LogTracer getLogger(String name,
+ String version, String schemaUrl, List attributes);
+ /// Flush all registered span processors.
+ void forceFlush();
+
+ /// Stop all registered span processors.
+ void shutdown();
+}
+
+
+
+
diff --git a/lib/src/api/Logs/readable_log_record.dart b/lib/src/api/Logs/readable_log_record.dart
new file mode 100644
index 00000000..864b5e8c
--- /dev/null
+++ b/lib/src/api/Logs/readable_log_record.dart
@@ -0,0 +1,26 @@
+import 'dart:ffi';
+
+import 'package:opentelemetry/api.dart' as api;
+import 'package:opentelemetry/sdk.dart' as sdk;
+import '../../sdk/common/attributes.dart';
+
+import 'package:opentelemetry/src/sdk/Logs/component_registry.dart';
+
+
+abstract class ReadableLogRecord {
+ sdk.Resource get resource;
+ late final DateTime observedTimestamp;
+ late final DateTime recordTime;
+ late final api.Severity? severity;
+ api.Attribute get body;
+ Attributes get attributes;
+ sdk.InstrumentationScope get instrumentationScope;
+ api.SpanContext get spanContext;
+
+
+ void setAttribute(api.Attribute attribute);
+ void setBody(api.Attribute attribute);
+ void setSevarity(api.Severity severity);
+ void emit();
+
+}
\ No newline at end of file
diff --git a/lib/src/api/Logs/severity.dart b/lib/src/api/Logs/severity.dart
new file mode 100644
index 00000000..c0aed584
--- /dev/null
+++ b/lib/src/api/Logs/severity.dart
@@ -0,0 +1,86 @@
+
+import 'dart:ffi';
+
+enum Severity {
+ trace,
+ trace2,
+ trace3,
+ trace4,
+ debug,
+ debug2,
+ debug3,
+ debug4,
+ info,
+ info2,
+ info3,
+ info4,
+ warn,
+ warn2,
+ warn3,
+ warn4,
+ error,
+ error2,
+ error3,
+ error4,
+ fatal,
+ fatal2,
+ fatal3,
+ fatal4
+}
+
+extension SeverityDescription on Severity {
+ String get description {
+ switch (this) {
+ case Severity.trace:
+ return "TRACE";
+ case Severity.trace2:
+ return "TRACE2";
+ case Severity.trace3:
+ return "TRACE3";
+ case Severity.trace4:
+ return "TRACE4";
+ case Severity.debug:
+ return "DEBUG";
+ case Severity.debug2:
+ return "DEBUG2";
+ case Severity.debug3:
+ return "DEBUG3";
+ case Severity.debug4:
+ return "DEBUG4";
+ case Severity.info:
+ return "INFO";
+ case Severity.info2:
+ return "INFO2";
+ case Severity.info3:
+ return "INFO3";
+ case Severity.info4:
+ return "INFO4";
+ case Severity.warn:
+ return "WARN";
+ case Severity.warn2:
+ return "WARN2";
+ case Severity.warn3:
+ return "WARN3";
+ case Severity.warn4:
+ return "WARN4";
+ case Severity.error:
+ return "ERROR";
+ case Severity.error2:
+ return "ERROR2";
+ case Severity.error3:
+ return "ERROR3";
+ case Severity.error4:
+ return "ERROR4";
+ case Severity.fatal:
+ return "FATAL";
+ case Severity.fatal2:
+ return "FATAL2";
+ case Severity.fatal3:
+ return "FATAL3";
+ case Severity.fatal4:
+ return "FATAL4";
+ default:
+ return "";
+ }
+ }
+}
diff --git a/lib/src/api/common/attribute.dart b/lib/src/api/common/attribute.dart
index 2f95d205..e3cd0a3e 100644
--- a/lib/src/api/common/attribute.dart
+++ b/lib/src/api/common/attribute.dart
@@ -6,6 +6,10 @@ class Attribute {
final String key;
final Object value;
+ String get id => key;
+ String get val => key;
+ Attribute.empty(this.key, String this.value);
+
/// Create an Attribute from a String value.
Attribute.fromString(this.key, String this.value);
diff --git a/lib/src/sdk/Logs/.DS_Store b/lib/src/sdk/Logs/.DS_Store
new file mode 100644
index 00000000..4d8e8bd2
Binary files /dev/null and b/lib/src/sdk/Logs/.DS_Store differ
diff --git a/lib/src/sdk/Logs/component_registry.dart b/lib/src/sdk/Logs/component_registry.dart
new file mode 100644
index 00000000..33c4b2fd
--- /dev/null
+++ b/lib/src/sdk/Logs/component_registry.dart
@@ -0,0 +1,93 @@
+import 'dart:collection';
+
+/// Holds information about the instrumentation library specified when creating an instance of
+/// TracerSdk using TracerProviderSdk.
+class InstrumentationScopeInfo {
+ final String name;
+ final String? version;
+ final String? schemaUrl;
+
+ /// Creates a new empty instance of InstrumentationScopeInfo.
+
+ /// Creates a new instance of InstrumentationScopeInfo.
+ /// - Parameters:
+ /// - name: name of the instrumentation library
+ /// - version: version of the instrumentation library (e.g., "semver:1.0.0"), might be null
+ InstrumentationScopeInfo({
+ required this.name,
+ this.version,
+ this.schemaUrl,
+ });
+
+ @override
+ List