日志
日志记录对于在开发和生产环境中监控和调试 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 库 提供结构化的键值日志。这为每条日志消息提供了额外的元数据,如果您使用 ELK、Grafana 或 Datadog 等工具存档日志,则特别有用。
如果 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 时。
更新于 12个月前
