Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions timberlogs/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -271,6 +271,10 @@ def _build_log_payload(self, entry: LogEntry) -> Dict[str, Any]:
if self._config.version:
payload["version"] = self._config.version

# Apply dataset: entry-level overrides config-level
if "dataset" not in payload and self._config.dataset:
payload["dataset"] = self._config.dataset

# Apply defaults if not set in entry
if "userId" not in payload and self._user_id:
payload["userId"] = self._user_id
Expand Down Expand Up @@ -617,6 +621,7 @@ def create_timberlogs(
environment: Environment,
api_key: Optional[str] = None,
endpoint: str = LOGS_ENDPOINT,
dataset: Optional[str] = None,
version: Optional[str] = None,
user_id: Optional[str] = None,
session_id: Optional[str] = None,
Expand All @@ -637,6 +642,7 @@ def create_timberlogs(
environment: The environment (development, staging, production).
api_key: Your Timberlogs API key (starts with tb_live_ or tb_test_).
endpoint: The ingestion endpoint URL.
dataset: The dataset to send logs to (defaults to "default" server-side).
version: Your application version.
user_id: Default user ID for all logs.
session_id: Default session ID for all logs.
Expand Down Expand Up @@ -664,6 +670,7 @@ def create_timberlogs(
environment=environment,
api_key=api_key,
endpoint=endpoint,
dataset=dataset,
version=version,
user_id=user_id,
session_id=session_id,
Expand Down
5 changes: 5 additions & 0 deletions timberlogs/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class LogEntryDict(TypedDict, total=False):
tags: Optional[List[str]]
flow_id: Optional[str]
step_index: Optional[int]
dataset: Optional[str]


@dataclass
Expand All @@ -50,6 +51,7 @@ class LogEntry:
tags: Optional[List[str]] = None
flow_id: Optional[str] = None
step_index: Optional[int] = None
dataset: Optional[str] = None

def to_dict(self) -> Dict[str, Any]:
"""Convert to dictionary for API serialization."""
Expand All @@ -75,6 +77,8 @@ def to_dict(self) -> Dict[str, Any]:
result["flowId"] = self.flow_id
if self.step_index is not None:
result["stepIndex"] = self.step_index
if self.dataset is not None:
result["dataset"] = self.dataset
return result


Expand All @@ -93,6 +97,7 @@ class TimberlogsConfig:
environment: Environment
api_key: Optional[str] = None
endpoint: str = "https://timberlogs-ingest.enaboapps.workers.dev/v1/logs"
dataset: Optional[str] = None
version: Optional[str] = None
user_id: Optional[str] = None
session_id: Optional[str] = None
Expand Down