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
10 changes: 5 additions & 5 deletions src/splunk_ao/configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -502,16 +502,16 @@ def disable_console_logging(cls) -> None:
Configuration.disable_console_logging()
```
"""
galileo_logger = logging.getLogger(SDK_LOGGER_NAME)
splunk_ao_logger = logging.getLogger(SDK_LOGGER_NAME)

# Remove all stream handlers
for handler in galileo_logger.handlers[:]:
for handler in splunk_ao_logger.handlers[:]:
if isinstance(handler, logging.StreamHandler):
galileo_logger.removeHandler(handler)
splunk_ao_logger.removeHandler(handler)

# Set level to suppress all output
galileo_logger.setLevel(logging.CRITICAL + 1)
galileo_logger.propagate = False
splunk_ao_logger.setLevel(logging.CRITICAL + 1)
splunk_ao_logger.propagate = False

# Clear the stored log level
cls.log_level = None
12 changes: 6 additions & 6 deletions src/splunk_ao/handlers/agent_control/bridge.py
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,8 @@ class SplunkAOAgentControlBridge:
safely rather than attached to the wrong logger hierarchy.
"""

def __init__(self, galileo_logger: SplunkAOLogger) -> None:
self._galileo_logger = galileo_logger
def __init__(self, splunk_ao_logger: SplunkAOLogger) -> None:
self._splunk_ao_logger = splunk_ao_logger
self._modules = _load_agent_control_modules()
self._sink = _SplunkAOControlEventSink(self)
self._registered = False
Expand Down Expand Up @@ -225,7 +225,7 @@ def write_events(self, events: Any) -> Any:
continue

try:
result = self._galileo_logger.add_control_span(**self._control_span_kwargs(event))
result = self._splunk_ao_logger.add_control_span(**self._control_span_kwargs(event))
except Exception:
logger.warning("Agent Control event conversion failed", exc_info=True)
dropped += 1
Expand All @@ -241,7 +241,7 @@ def _sink_result(self, *, accepted: int, dropped: int) -> Any:
return self._modules.sinks.SinkResult(accepted=accepted, dropped=dropped)

def _active_context(self) -> _ActiveContext | None:
current_parent = self._galileo_logger.current_parent()
current_parent = self._splunk_ao_logger.current_parent()
if current_parent is None or current_parent.id is None:
return None

Expand Down Expand Up @@ -300,6 +300,6 @@ def _control_span_kwargs(event: Any) -> dict[str, Any]:
}


def setup_agent_control_bridge(galileo_logger: SplunkAOLogger) -> SplunkAOAgentControlBridge:
def setup_agent_control_bridge(splunk_ao_logger: SplunkAOLogger) -> SplunkAOAgentControlBridge:
"""Create and register an Agent Control bridge for a Galileo logger."""
return galileo_logger.enable_agent_control()
return splunk_ao_logger.enable_agent_control()
8 changes: 4 additions & 4 deletions src/splunk_ao/handlers/base_async_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class SplunkAOAsyncBaseHandler(SplunkAOBaseHandler):

Attributes
----------
_galileo_logger : SplunkAOLogger
_splunk_ao_logger : SplunkAOLogger
The Galileo logger instance.
_nodes : dict[UUID, Node]
A dictionary of nodes, where the key is the run_id and the value is the node.
Expand All @@ -43,7 +43,7 @@ async def async_commit(self) -> None:
return

if self._start_new_trace:
self._galileo_logger.start_trace(
self._splunk_ao_logger.start_trace(
input=serialize_to_str(root_node.span_params.get("input", "")),
name=root_node.span_params.get("name"),
metadata=root_node.span_params.get("metadata"),
Expand All @@ -56,13 +56,13 @@ async def async_commit(self) -> None:

if self._start_new_trace:
# If we started a new trace, we need to conclude it
self._galileo_logger.conclude(
self._splunk_ao_logger.conclude(
output=serialize_to_str(root_output), status_code=root_node.span_params.get("status_code")
)

if self._flush_on_chain_end:
# Upload the trace to Galileo
await self._galileo_logger.async_flush()
await self._splunk_ao_logger.async_flush()

# Clear nodes after successful commit
self._nodes.clear()
Expand Down
34 changes: 17 additions & 17 deletions src/splunk_ao/handlers/base_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class SplunkAOBaseHandler:

Attributes
----------
_galileo_logger : SplunkAOLogger
_splunk_ao_logger : SplunkAOLogger
The Galileo logger instance.
_nodes : dict[UUID, Node]
A dictionary of nodes, where the key is the run_id and the value is the node.
Expand All @@ -39,18 +39,18 @@ class SplunkAOBaseHandler:
def __init__(
self,
integration: INTEGRATION = "langchain",
galileo_logger: SplunkAOLogger | None = None,
splunk_ao_logger: SplunkAOLogger | None = None,
start_new_trace: bool = True,
flush_on_chain_end: bool = True,
ingestion_hook: Callable[[TracesIngestRequest], None] | None = None,
):
self._galileo_logger: SplunkAOLogger = galileo_logger or splunk_ao_context.get_logger_instance(
self._splunk_ao_logger: SplunkAOLogger = splunk_ao_logger or splunk_ao_context.get_logger_instance(
ingestion_hook=ingestion_hook
)
if galileo_logger and ingestion_hook:
if self._galileo_logger.mode == "distributed":
if splunk_ao_logger and ingestion_hook:
if self._splunk_ao_logger.mode == "distributed":
raise ValueError("ingestion_hook can only be used in batch mode")
self._galileo_logger._ingestion_hook = ingestion_hook
self._splunk_ao_logger._ingestion_hook = ingestion_hook
self._start_new_trace: bool = start_new_trace
self._flush_on_chain_end: bool = flush_on_chain_end
self._nodes: dict[str, Node] = {}
Expand All @@ -75,7 +75,7 @@ def commit(self) -> None:

try:
if self._start_new_trace:
self._galileo_logger.start_trace(
self._splunk_ao_logger.start_trace(
input=SplunkAOLogger._coerce_output(root_node.span_params.get("input", "")),
name=root_node.span_params.get("name"),
metadata=root_node.span_params.get("metadata"),
Expand All @@ -87,13 +87,13 @@ def commit(self) -> None:
root_output = root_node.span_params.get("output", "")

if self._start_new_trace:
self._galileo_logger.conclude(
self._splunk_ao_logger.conclude(
output=SplunkAOLogger._coerce_output(root_output),
status_code=root_node.span_params.get("status_code"),
)

if self._flush_on_chain_end:
self._galileo_logger.flush()
self._splunk_ao_logger.flush()
finally:
# Always clean up, even if trace building or flush fails
self._nodes.clear()
Expand Down Expand Up @@ -129,7 +129,7 @@ def log_node_tree(self, node: Node) -> None:

# Log the current node based on its type
if node.node_type == "chain":
self._galileo_logger.add_workflow_span(
self._splunk_ao_logger.add_workflow_span(
input=input_,
output=output,
name=name,
Expand All @@ -142,7 +142,7 @@ def log_node_tree(self, node: Node) -> None:
)
is_span_with_children = True
elif node.node_type == "agent":
self._galileo_logger.add_agent_span(
self._splunk_ao_logger.add_agent_span(
input=input_,
output=output,
name=name,
Expand All @@ -155,7 +155,7 @@ def log_node_tree(self, node: Node) -> None:
)
is_span_with_children = True
elif node.node_type in ("llm", "chat"):
self._galileo_logger.add_llm_span(
self._splunk_ao_logger.add_llm_span(
input=input_,
output=output,
model=node.span_params.get("model"),
Expand All @@ -174,7 +174,7 @@ def log_node_tree(self, node: Node) -> None:
status_code=node.span_params.get("status_code"),
)
elif node.node_type == "retriever":
self._galileo_logger.add_retriever_span(
self._splunk_ao_logger.add_retriever_span(
input=input_,
output=output,
name=name,
Expand All @@ -185,7 +185,7 @@ def log_node_tree(self, node: Node) -> None:
step_number=step_number,
)
elif node.node_type == "tool":
tool_span = self._galileo_logger.add_tool_span(
tool_span = self._splunk_ao_logger.add_tool_span(
input=input_,
output=output,
name=name,
Expand All @@ -199,9 +199,9 @@ def log_node_tree(self, node: Node) -> None:
)
# If tool has children (e.g., agent-as-tool invocations), push it to parent stack
if node.children and tool_span is not None:
parent_before_tool = self._galileo_logger.current_parent()
parent_before_tool = self._splunk_ao_logger.current_parent()
tool_span._parent = parent_before_tool
self._galileo_logger._set_current_parent(tool_span)
self._splunk_ao_logger._set_current_parent(tool_span)
is_span_with_children = True
else:
_logger.warning(f"Unknown node type: {node.node_type}")
Expand All @@ -219,7 +219,7 @@ def log_node_tree(self, node: Node) -> None:
# Conclude parent span. Use the last child's output if necessary
if is_span_with_children:
output = output or (last_child.span_params.get("output", "") if last_child else "")
self._galileo_logger.conclude(
self._splunk_ao_logger.conclude(
output=serialize_to_str(output), status_code=node.span_params.get("status_code")
)

Expand Down
4 changes: 2 additions & 2 deletions src/splunk_ao/handlers/crewai/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ class CrewAIEventListener:

def __init__(
self,
galileo_logger: SplunkAOLogger | None = None,
splunk_ao_logger: SplunkAOLogger | None = None,
start_new_trace: bool = True,
flush_on_crew_completed: bool = True,
):
Expand All @@ -74,7 +74,7 @@ def __init__(
self._handler = SplunkAOBaseHandler(
flush_on_chain_end=flush_on_crew_completed,
start_new_trace=start_new_trace,
galileo_logger=galileo_logger,
splunk_ao_logger=splunk_ao_logger,
integration="crewai",
)
self._active_tool_run_id: UUID | None = None
Expand Down
4 changes: 2 additions & 2 deletions src/splunk_ao/handlers/langchain/async_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,15 +44,15 @@ class SplunkAOAsyncCallback(AsyncCallbackHandler):

def __init__(
self,
galileo_logger: SplunkAOLogger | None = None,
splunk_ao_logger: SplunkAOLogger | None = None,
start_new_trace: bool = True,
flush_on_chain_end: bool = True,
ingestion_hook: Callable[[TracesIngestRequest], None] | None = None,
):
self._handler = SplunkAOAsyncBaseHandler(
flush_on_chain_end=flush_on_chain_end,
start_new_trace=start_new_trace,
galileo_logger=galileo_logger,
splunk_ao_logger=splunk_ao_logger,
integration="langchain",
ingestion_hook=ingestion_hook,
)
Expand Down
4 changes: 2 additions & 2 deletions src/splunk_ao/handlers/langchain/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ class SplunkAOCallback(BaseCallbackHandler):

def __init__(
self,
galileo_logger: SplunkAOLogger | None = None,
splunk_ao_logger: SplunkAOLogger | None = None,
start_new_trace: bool = True,
flush_on_chain_end: bool = True,
ingestion_hook: Callable[[TracesIngestRequest], None] | None = None,
):
self._handler = SplunkAOBaseHandler(
flush_on_chain_end=flush_on_chain_end,
start_new_trace=start_new_trace,
galileo_logger=galileo_logger,
splunk_ao_logger=splunk_ao_logger,
integration="langchain",
ingestion_hook=ingestion_hook,
)
Expand Down
6 changes: 3 additions & 3 deletions src/splunk_ao/handlers/langchain/middleware.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def __init__(self, *args, **kwargs):
class SplunkAOMiddleware(AgentMiddleware):
def __init__(
self,
galileo_logger: SplunkAOLogger | None = None,
splunk_ao_logger: SplunkAOLogger | None = None,
start_new_trace: bool = True,
flush_on_chain_end: bool = True,
ingestion_hook: Callable[[TracesIngestRequest], None] | None = None,
Expand All @@ -50,14 +50,14 @@ def __init__(
self._handler = SplunkAOBaseHandler(
flush_on_chain_end=flush_on_chain_end,
start_new_trace=start_new_trace,
galileo_logger=galileo_logger,
splunk_ao_logger=splunk_ao_logger,
integration="langchain",
ingestion_hook=ingestion_hook,
)
self._async_handler = SplunkAOAsyncBaseHandler(
flush_on_chain_end=flush_on_chain_end,
start_new_trace=start_new_trace,
galileo_logger=galileo_logger,
splunk_ao_logger=splunk_ao_logger,
integration="langchain",
ingestion_hook=ingestion_hook,
)
Expand Down
Loading
Loading