文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
文档

日志

日志记录对于在开发和生产环境中监控和调试 LLM 应用程序至关重要。Haystack 提供各种开箱即用的日志记录解决方案,可根据您的用例快速上手。

标准库日志记录(默认)

Haystack 通过 Python 的标准库进行日志记录。这为您提供了完全的灵活性和可定制性,可以根据您的需求调整日志格式。

更改日志级别

默认情况下,Haystack 的日志级别设置为 WARNING。要显示更多信息,您可以将其更改为 INFO。这样,不仅警告信息,信息消息也会显示在控制台输出中。

要将日志级别更改为 INFO,请运行

import logging

logging.basicConfig(format="%(levelname)s - %(name)s -  %(message)s", level=logging.WARNING)
logging.getLogger("haystack").setLevel(logging.INFO)

进一步配置

有关更高级的配置,请参阅Python 关于日志记录的文档

实时管道日志记录

使用 Haystack 的 LoggingTracer 日志记录,以实时检查通过管道的数据。

此功能在实验和原型制作期间特别有用,因为您无需预先设置任何追踪后端。

以下是启用此追踪器的方法。在此示例中,我们添加了颜色标签(可选),以突出显示组件的名称和输入

import logging
from haystack import tracing
from haystack.tracing.logging_tracer import LoggingTracer

logging.basicConfig(format="%(levelname)s - %(name)s -  %(message)s", level=logging.WARNING)
logging.getLogger("haystack").setLevel(logging.DEBUG)

tracing.tracer.is_content_tracing_enabled = True # to enable tracing/logging content (inputs/outputs)
tracing.enable_tracing(LoggingTracer(tags_color_strings={"haystack.component.input": "\x1b[1;31m", "haystack.component.name": "\x1b[1;34m"}))

以下是运行管道时生成的日志的样子

结构化日志记录

Haystack 利用 structlog 库 提供结构化的键值日志。这为每条日志消息提供了额外的元数据,如果您使用 ELKGrafanaDatadog 等工具存档日志,则特别有用。

如果 Haystack 检测到您系统上已安装 structlog,它将自动切换到 structlog 进行日志记录。

控制台渲染

为了使开发体验更愉快,Haystack 默认使用 structlog 的 ConsoleRender 将结构化日志呈现为对齐良好且色彩鲜艳的输出。

👍

富文本格式化

安装 rich 以使您的日志更加美观!

JSON 渲染

我们建议在生产环境中部署 Haystack 时使用 JSON 日志记录。如果 Haystack 检测到没有交互式终端会话,它将自动切换到 JSON 格式。如果您想强制使用 JSON 日志记录

  • 运行 Haystack 并将环境变量HAYSTACK_LOGGING_USE_JSON 设置为true.

  • 或者,使用 Python 让 Haystack 以 JSON 格式记录

    import haystack.logging
    
    haystack.logging.configure_logging(use_json=True)
    

禁用结构化日志记录

要即使已安装 structlog 也禁用结构化日志记录,请将环境变量HAYSTACK_LOGGING_IGNORE_STRUCTLOG_ENV_VAR 设置为true 在运行 Haystack 时。