将 Custom Logs 转换为可查询的表。
有些日志由只有你们公司在运行的软件写入。只需指定记录从哪里开始、使用哪种语法、时间戳在哪里以及各列的名称——设置一次,它就和其他表一样了。
通过 Database REST API,在 Excel、Google Sheets、AI 工具和您的应用中使用结果。
所有连接器类型均包含在 Free 套餐中。可从 2 个数据源和 1 个代理开始使用。
Query Streams 可读取任何文本日志,包括由只有你们公司在运行的软件写入的日志,并将文件夹转换为实时 SQL 表,可通过 Microsoft Excel、Google Sheets、基于 MCP 的 AI 助手、REST API 和 Power BI 读取。只需描述一次格式——记录边界、语法、时间戳、列和轮转方式——之后 Agent 就会始终按照该描述处理。支持六种语法:分隔符、key = value、grok、JSON lines、#Fields 标头指令和定宽格式。描述规则无法匹配的行会作为原始行保留,而不会被丢弃,因此遇到意料之外的格式也不会造成损失。
- 六种语法,只需描述一次
- 不匹配的行会保留,绝不丢弃
- 不会将任何内容发送出去进行解析
使用正确的设置连接 Custom Logs。
在 Network Agent 上保持连接。以下是 Custom Logs 专属的详细信息。
- 文件夹
- 任意文本日志文件夹——本地磁盘或以 \\server\share 形式输入的网络共享(切勿使用映射的驱动器号;在 Linux 或 Mac 上需先挂载);包含子文件夹,支持包含和排除模式
- 语法
- 分隔符、key = value、grok、JSON lines、#Fields 标头指令和定宽格式
- 记录边界
- 由你设置——每条记录一行,或使用模式、固定行数、空行或哨兵标记,确保多行记录完整保留
- 时间戳
- 可描述位置和格式;如果行中没有年份,可以从文件的修改时间或文件名中获取
- 轮转
- 支持十种命名轮转模式以及未轮转的普通文件;直接读取压缩归档
- 无法匹配的行
- 原样保存在 events_raw_lines 中,绝不丢弃
- 凭据
- 无需服务器——代理直接读取原位置的文件
这是唯一可以编辑的日志配置文件,这正是设计目的:其他所有配置文件都由我们固定,因此不会发生偏移。代价是,自定义描述无法像随产品提供的配置文件那样事先证明正确——为此提供了预览功能,它会将你的描述应用到自己的文件上,并在提交任何内容之前显示行数据。
专为 Custom Logs 的工作方式打造。
格式的五个组成部分
锁定的配置文件会替你固定这些设置。Custom 会开放全部五项,它们就是完整的描述——无需配置其他内容,也没有隐藏设置。
- 记录边界——一条记录在哪里结束、下一条从哪里开始,这样多行堆栈跟踪就能保留在同一行中。
- 语法——分隔符、key = value、grok、JSON lines、#Fields 标头指令或定宽格式。
- 时间戳——时间戳的位置和书写方式,包括行中未包含年份时年份的来源。
- 列——每个字段的名称和类型,这样数字会按数字排序,日期也能按日期筛选。
- 增长模型——文件如何增长和轮转,使昨天的归档文件与今天的实时文件成为同一张表。
-- 列叫什么都无所谓,这就是普通 SQL
SELECT file_name, severity, COUNT(*) AS lines
FROM fileset.events
WHERE severity IN ('WARN','ERROR')
GROUP BY file_name, severity
ORDER BY lines DESC先试试内置配置
“测试连接”会将检测到的内容与随产品提供的配置文件进行匹配,并提供最接近的选项。这是指纹匹配,而不是由模型读取您的日志——您的文件不会被发送到任何地方进行解读。如果有合适的内置配置,就使用它:固定使用一个配置文件,比维护您自己的描述省事。如果没有合适的配置,请自行描述;如果您希望我们提供内置配置,也可以向我们提出申请。
格式与行为详解。
打开您需要的自定义日志参考文档。
如果是文本文件,则可以是表格。
如果是文本文件,则可以是表格。
三个文件,三种毫不相干的格式——一个由业务应用写入,一个由批处理作业写入,还有一个来自自 2011 年以来就无人维护的机器。每种格式只需描述一次,您命名的列就是可供查询的列。无需运行采集器,无需维护索引,也无需保留第二份数据副本。
轮转、压缩归档和重新读取的文件——均已妥善处理
选择 文件名、严重程度、
数数(*) AS 线条
从 文件集.事件
地点 严重性 IN ('警告','错误')
GROUP BY 文件名,严重性
ORDER BY 线条 DESC有一个 严重性 因为你说有一个专栏。
示意数据——展示答案的形式,并非基准测试
六种解释线条含义的方法
六种解释线条含义的方法
几乎所有文字日志都属于这六种格式之一。在下方找到你的日志格式,通常情况下,参考示例行比阅读描述更快就能确定。
您可以选择的语法
6种语法- 指定分隔符——逗号、制表符、分号、竖线,或文件实际使用的任何分隔符
- 带引号的字段会被保留,因此消息中的逗号会留在引号内。
- 标题行可以自动命名列,无需手动输入。
- 您可以自行设置小数分隔符,适用于分隔符为逗号的文件。
- 行中的键会成为列——无需重新声明
- 分隔符和键值对之间的分隔符都由你决定:键和值之间的分隔符,以及键值对之间的分隔符。
- 键值对前的前缀(例如时间戳或标签)可以跳过
- 在编写用于解析的应用程序和机器日志中很常见
- 命名捕获组会成为列——其他方法都不适用时的兜底方案
- 内置配置文件背后的模式库可供借鉴。
- 对于包含多种线条形状的文件,可以按顺序尝试几种不同的模式。
- 起始默认值——1
信息然后缩小列宽
- 字段会变成列,您可以选择实际需要的列。
- 嵌套对象会以 JSON 格式完整保留,而不是被扁平化或删除。
- 可以剥除容器运行时添加的包装层,以便查询内部记录
- 大多数现代日志库在被要求以结构化方式写入日志时会生成什么内容?
- 顶部附近的一行声明了各个字段,列紧随其后。
- W3C 扩展格式,以及任何其他借鉴了这一理念的格式。
- 你只需给指令命名,无需拼写。
#田野 - 无需同步任何内容——列清单的来源就是文件本身
- 为每列指定名称、起始位置和长度——无需分隔符
- 对于字段可以包含分隔符的文件,正确答案是
- 大型机、控制器和许多工业设备仍然在编写什么?
- 填充部分会被去除,因此值不会以空格包裹。
自行描述是最快的方式。如果这是一种许多人都在使用的格式,我们更愿意将它作为内置配置文件提供,并由 Agent 为所有人固定使用——连接器会直接链接到申请页面,相关配置也会随 Agent 更新发布。
描述一次,在所有运行该连接器的地方使用
请用一句话描述一下。 无论你在哪里跑步,都要使用它
描述属于连接器,而不属于某台机器。同样的五个部分,既可以读取总部的审计文件,也可以读取工厂和另一个区域的文件——每个站点都会运行一个 Network Agent,在文件所在位置读取文件,并向外连接到 Query Streams。从防火墙的角度看,这只是普通的出站连接,因此无需开放端口,也无需搭建 VPN。
三个出站连接,一个查询入口——无需入站端口、VPN 或更改防火墙
你命名身份
每一行都会标明其来源。默认情况下,来源是文件名;如果机器或站点是行中的一个字段,或者是文件名的一部分,您也可以将来源标签指向它,并按此分组。
文件名 · 某一列 · 文件名的一部分
无需打开
代理只建立一个加密的出站连接,请求和返回的数据行都通过该连接传输。无需入站端口、无需 VPN、无需申请更改防火墙——也无需在已经运行采集程序的服务器上再添加一个采集守护进程。
一个连接,双向
跨区域的一次查询
每个来源 联合查询 为其指定自己的 Agent 名称,这样一条语句就能将定制日志与解释它的数据库放在一起——例如,将批处理文件与它所属的订单放在一起。Business 和 Enterprise 版本包含此功能。
1 个日志 + 1 个数据库 → 1 个结果集
只需编写一次,无需逐个网站编写
描述格式的工作是一次性的。第二个形状相同的文件夹相当于第二个连接器,描述也相同,因此将其部署到另一个位置只需进行设置步骤,而无需进行另一次调查。
1 份描述 → 所有相同格式的文件夹
文本文件无法回答的四个问题
文本文件无法回答的四个问题
解析日志行只是第一步。日志文件不会告诉你这些信息,而这些信息需要你自己去描述,而不是靠猜测。
唱片的起始和结束位置
堆栈跟踪信息是一个跨越二十行的事件,如果将其解读为二十个事件,则数字会出错。有六种方法可以标记边界:一行、用于开始记录的模式、空行、开始和结束标记、延续规则或固定计数。
1 条记录不一定是 1 行
该编码没有默认值
这是唯一有意留空的字段。将 Latin-1 文件误认为 UTF-8 不会报错——它只会悄悄破坏所有带重音符号的字符,而您可能几个月后才会发现。因此,我们会在首次同步前询问一次,而不是擅自猜测。
选择,而非假定
那一年,这条线没有了
许多格式只记录月份和日期,不记录年份。可通过三种方式确定年份:从行中读取、使用文件自身的修改时间,或从文件名中读取——日期归档文件通常会在文件名中保留年份。
从行中读取 · 从文件读取 · 从名称读取
没有任何事会被重复计算。
系统会根据每个文件的前 4 KB 生成指纹,因此重命名或轮转后的文件会被识别出来,而不会从头重新读取。系统可按名称识别十种轮转模式;此外还有“无”模式,适用于只会不断增长的文件。
4 KB 前缀哈希 · 20,000 条记录窗口
分为五部分,然后是一个表格。
分为五部分,然后是一个表格。
您需要填写的内容就是全部这些。其他日志页面上的每个内置配置文件,都由我们填写这同样的五个部分,并由 Agent 固定使用;而在这里,这些内容由您掌控。
信息 每行一列,事件时间取自文件的修改时间。这样几乎任何文件都足以成功完成首次同步——之后,您可以根据预览逐步调整,直到列符合预期。每行还会记录其来源文件,所有数据都会写入同一张表, 文件集.事件.它刻意不做的事情
它刻意不做的事情
先说最重要的一个: 在您使用此方法之前,请先尝试内置配置文件。。运行“测试连接”后,Agent 会提供其识别到的最接近的内置配置——如果有合适的,就直接采用,无需再描述任何内容。内置配置由 Agent 固定使用,并经过真实文件测试,而您今天下午刚写的描述尚未经过这样的测试。此预设是为无人使用的格式准备的兜底方案,而不是默认的起点。
没有任何东西会读取您的日志来替您推断格式。系统提供的最接近匹配项,是将您文件的格式与随产品提供的配置文件进行比较的结果——这是针对已知格式的模式匹配,而不是模型读取您的数据。如果没有匹配项,就由您编写描述,并通过预览进行检查。
它不是实时日志流。查询流会在您运行查询时读取磁盘上的文件,因此失败的作业会以行的形式显示,而不是以您可以监视的流的形式显示。如果您需要在打印行时立即发出亚秒级警报,那么日志管道才是合适的工具。
它只读取文本。文件夹中的归档文件和二进制数据库—— 。拉链, 。出租车,以及原始日志文件——都会保持原样,不会被打开并猜测内容。系统会读取文本日志的压缩轮转文件;如果容器中装的是其他内容,则不会读取。
描述信息可能存在错误,因此不会丢弃任何数据。语法不匹配的行会作为原始数据行保留,并附带错误原因,这样错误就会以可见和可查询的形式出现,而不是默默无闻地显示出来。修正描述信息并重新同步即可。其余部分遵循常规设计:代理程序连接出站网络并读取文件,服务器上不安装任何软件,不写回任何数据,且访问权限为只读。
从连接到获取有用结果。
- 在能够访问该文件夹的位置安装 Network Agent,并将连接器指向该文件夹。
- 先运行“测试连接”。Agent 会为检测到的内容生成指纹,并提供最接近的内置配置文件——如果有合适的,就采用它,无需再描述任何内容。
- 如果没有合适的配置,就自行描述格式:记录从哪里开始、使用六种语法中的哪一种、时间戳位于何处,以及各列的名称。
- 选择轮转模式;对于时间戳中不含年份的格式,还要指定年份的来源。随后,这份描述就会被固定使用。
- 查询即可。此表的行为与其他日志连接器的表完全相同,因为它使用的是同一个驱动程序,只不过读取的是您提供的格式,而不是我们随产品提供的格式。
让自定义日志查询结果发挥作用。
一个连接即可供您的电子表格、应用和 AI 工具使用。授予他人运行已保存查询的权限;接收者只能看到获准的结果,SQL 和数据源登录信息均会隐藏。
为您的团队、供应商和合作伙伴
将实时 Custom Logs 结果直接拉取到工作表,并按需刷新 — 适用于桌面版 Excel、Excel Online 和 Microsoft 365。
了解 Excel从侧边栏运行已保存的 Custom Logs 查询,并将行插入工作表。共享协作者也可以自行刷新。
了解 Google Sheets用通俗英语提问。Nova 已了解您的 Custom Logs 表,会编写并运行 SQL、解释答案并生成图表 — 无需编写查询,也无需交出凭据。
Nova 的工作原理与任何人 — 同事、供应商或合作伙伴 — 分享实时 Custom Logs 结果,将其作为可加入书签的网格;打开时会重新运行并获取最新数据,可在手机、平板电脑或桌面设备上查看。对方只能看到结果,看不到 SQL 或文件。
数据查看器的工作原理对于应用程序和系统
将 Custom Logs 查询发布为经过身份验证的 JSON 端点,供任何应用调用,并附带 OpenAPI 3.1 规范以及现成的 Postman、Insomnia 和 Hoppscotch 集合。无需开放数据库端口。
了解 REST API将生成的 Power Query M 粘贴到 Power BI 高级编辑器,报表即可通过 HTTPS 读取实时 Custom Logs 结果 — 无需 ODBC 驱动程序,也无需开放数据库端口。
了解 Power BI按计划将 Custom Logs 行同步到 Airtable 基础,或在 Airtable 自动化脚本中获取这些数据。
了解 Airtable通过 REST 端点将 Custom Logs 数据馈送到 Baserow 表 — 无论是自托管还是 Baserow 云服务均可。
了解 Baserow无需导出文件或暴露数据库,即可让 SeaTable 基础中的 Custom Logs 数据保持最新。
了解 SeaTable将 Custom Logs 结果推送到 Smartsheet 网格,让计划和报表读取源系统中的数据,而不是上周导出的文件。
了解 Smartsheet通过 REST 端点使用 Custom Logs 为 Anvil Python 应用提供数据支持,而不是将数据库凭据嵌入应用中。
了解 Anvil人工智能工具
为 AI 助手提供 Custom Logs 只读访问权限及编写正确 SQL 所需的架构信息 — 无需在聊天中提供凭据。
探索 MCP已送达
按计划运行 Custom Logs 查询,并将行发送到 Slack、Discord、电子邮件或已签名的 webhook — 也可以在行数、阈值或百分比变化达到您设定的条件后再发送消息。
警报和报告的工作原理将 Custom Logs 与其余数据联接。
将数据库、业务 API、文件和日志纳入一个只读查询。所有连接器都支持联合查询。
指定连接和表名。Query Streams 会处理各数据源的查询并合并结果。
了解联合查询——没有任何复制、合并或安排操作。
选择 c.region,COUNT(*) AS orders,SUM(i.amount_due) AS invoiced
从 customlogs.fileset.orders1 f
连接 pg_crm.public.customers2 c ON c.id = f.customer_id
连接 计费.stripe.invoices3 i ON i.customer = c.stripe_id
GROUP BY c.区域
ORDER BY 发票上的描述;请使用您自己的连接、架构、表和列名称。
连接器系列通用功能。
每个日志连接器还会提供
- events——每条解析后的日志行对应一行,包含时间戳、语法定义的字段,以及标明其来源文件的 _source_file。
- events_raw_lines——语法未能匹配的行会原样保留,而不会被丢弃,因此即使遇到意料之外的格式,你仍然可以查询并找到答案。
- files_current 和 files_events——实时文件清单和审计记录:哪些文件出现、哪些发生轮转、哪些消失,以及哪些内容被暂缓处理,并注明文件名和原因。
- 理解轮转,而不是绕过它——支持十种命名轮转模式以及未轮转的普通文件,因此昨天的日志及其压缩归档与今天的日志属于同一张表。
知道这个很有用
- 强制只读——一次只执行一条语句,且仅限 SELECT 等查询。我们绝不会写入、移动、轮转或截断您的日志。
- 不会上传任何内容——日志行在您自己的计算机上、代理旁边进行解析和缓存,并经过加密。只有查询结果会离开您的网络。
- 只读取新增字节——代理会从每个文件上次读取的位置继续,而不会重新读取,因此繁忙的日志不会让成本日复一日增加。
- SQL 方言为 DuckDB — 与您针对任何其他连接器编写的 SQL 相同。
关于 Custom Logs 的常见问题
Custom Logs 查询结果可以在哪里使用?
在 Excel、Google Sheets 和 Data Viewer 中使用 Custom Logs 结果;也可以通过 Database REST API 将结果用于你的应用,并通过 MCP 或 Nova 用于 AI 工具。已保存的结果还可提供给受支持的 Automation 目标、报告和提醒。目标可用性和配额取决于你的套餐。
使用 Custom Logs 需要开放入站端口吗?
不需要。在能够访问 Custom Logs 的机器上安装 Network Agent 即可。Agent 会主动连接到 Query Streams;无需开放入站端口,也无需 VPN。你的数据源仍必须按照自身的访问规则,允许 Agent 所在机器连接。
我的 Custom Logs 文件会被上传吗?
Network Agent 会在文件原位置读取文件,并将缓存保存在代理所在计算机上。源文件不会被上传、移动或重写。只有请求的查询结果会通过加密的出站连接离开你的网络。
连接 Custom Logs 需要什么?
文件夹:任何存放文本日志的文件夹 — 本地磁盘或输入为 \\server\share 的网络共享(不能使用映射的驱动器盘符;在 Linux 或 Mac 上须先挂载);包含子文件夹,支持包含和排除模式。语法:分隔符、key = value、grok、JSON 行、#Fields 标头指令和固定宽度。记录边界:由您设置 — 每条记录一行,或按模式、固定行数、空行或哨兵值划分,确保多行记录保持完整。时间戳:指定位置和格式;如果行中没有年份,可从文件的修改时间或文件名中获取。
我可以将 Custom Logs 与其他已连接的数据源联接吗?
可以。联合查询支持所有连接器类型,包括数据库、业务 API、文件和日志。在一个只读查询中指定连接和表名即可。Query Streams 会根据需要转换各数据源对应的查询部分,并合并结果。 了解联合查询的工作方式。
什么时候应该使用这个而不是内置配置文件?
适用于其他方式都不合适的情况。内置配置文件覆盖机器控制器、Web 服务器、容器、应用程序框架和系统日志,每个配置文件都基于真实文件编写并经过测试 — 因此,如果您的日志属于其中一种,选择现成配置文件比自行描述省事,而且经过了更充分的测试。
做决定前请先运行连接测试。代理会将您的文件格式与预置配置文件进行比较,并提供最接近的匹配项,因此答案来自您的实际文件,而非猜测。如果测试没有返回任何结果,请尝试使用描述功能。
我需要了解正则表达式吗?
通常不需要。六种语法中有五种根本不需要任何模式:分隔符文件需要分隔符,键值对文件本身进行描述,JSON 行本身进行描述,头部指令为其列命名,固定宽度需要每列的起始位置和长度。
Grok 是第六种语法,也是处理真正棘手行的应急方案。即便如此,您主要也是组合一些命名部分 — 时间戳、级别、其余内容等 — 而内置配置文件背后的模式库可供借鉴,不必从空白行开始编写。
我必须第一次就把描述写对吗?
不,默认设置已经完成,您无需手动操作。开箱即用,几乎任何文本文件都能成功完成首次同步:一个 信息 每行一列,事件时间取自文件的修改时间。这样就能得到一张可供实际查看的可用表格。
接下来可以进一步完善。预览会显示您的描述对实际日志行的处理效果,因此您可以将严重性或作业编号提取到单独的列中,并在确认之前查看结果。之后也可以修改并重新同步 — 在此期间,任何数据都不会丢失。
我的事件跨越多行。它能处理堆栈跟踪吗?
可以,而且这是人们最常需要的设置。记录不一定要按行划分:您可以指定每当某行匹配某个模式时就开始一条记录 — 通常是左边缘处的时间戳 — 后续所有内容都属于该记录,直到匹配到下一个模式。
如果边界形状不符合要求,还有其他五种方法可以绘制边界:记录之间的空白线、开始和结束标记、续行规则,或者固定的行数。如果出现二十行的例外情况,则会将其视为包含所有记录的一行。
如果这些行根本没有时间戳怎么办?
这是默认情况,而且可正常使用。如果没有将任何字段指定为时间,事件时间就取自文件的修改时间 — 因此这些行仍可排序,也仍遵循保留期限,只是时间精确到文件而非具体行。
如果行中的时间拆分在两个字段中 — 日期列和时间列,在固定宽度文件和分隔符文件中很常见 — 您可以指定这两个字段,并将它们合成为一个时间戳。
我应该选择哪种编码方式?
对于这十年间编写的大多数文件而言,UTF-8 是正确的选择。它是唯一一个没有默认值的字段,这是有意为之:假设 Latin-1 文件使用 UTF-8 编码不会报错,它会悄无声息地损坏每个带重音符号的字符,而这种悄无声息的损坏远比事先询问一次要糟糕得多。
如果不确定,预览会告诉您 — 编码错误会立即在示例行中显示为乱码。旧版 Windows 软件和工业设备通常是导致编码并非 UTF-8 的原因。
能否直接将我的格式添加为内置格式?
请告诉我们。如果这是相当多人会使用的格式 — 商业产品、常见框架或工业设备 — 我们更愿意将其作为内置配置文件发布,而不是让每位客户都重复描述同一格式。连接器中有直接提交请求的链接。
内置功能对您和我们都更有利:它由代理程序固定,经过真实捕获测试,并且会随着代理程序更新而到达您的服务器,而无需任何人触碰连接器。
如果行不匹配会发生什么情况?
它们会被保留,而不是被删除。语法不符的行会被保留为原始行,并附带原因说明。因此,奇怪的条目、您操作期间更改的格式,或者尚不完全正确的描述,都会显示出来供您查看和查询,而不是在您的数据中留下一个无声的空白。
这就是让完善描述变得可行的安全保障。您永远不必在会丢弃数据的严格解析器和只给出一大段文本的宽松解析器之间二选一 — 已解析的行会进行类型化,未能解析的内容也会保留在旁边。

