小编the*_*e88的帖子

将错误消息返回给期望“Box<dyn Error>”的函数

我是 Rust 的新手,正在尝试传播要在调用函数中处理的错误。从官方 Rust 书中,我读到 Result 'Box< dyn Error>' 用于表示捕获任何类型的错误,但我读得还不够深入,无法理解它的实际工作原理。

我有一个函数叫:

fn foo() -> Result<String, Box<dyn Error>> {
    Command::new("an_executable")
        .args(&["-p", path])
        .output()?;
    if condition {
        return Err("Error...");
    }
    // Do stuff, return String 
}
Run Code Online (Sandbox Code Playgroud)

因此,有人可以解释如果该返回类型满足条件,我应该如何返回错误。我是否必须更改返回类型或只返回不同的内容。在这种情况下,RUST 标准是什么?

当前编译错误是 Err("Error...") 与返回类型不匹配

error-handling rust

10
推荐指数
1
解决办法
3172
查看次数

Filebeat 可以将 JSON 字段而不是整个 JSON 对象解析为 kibana 吗?

我能够在 Kibana 中获取单个 JSON 对象:

在此输入图像描述

通过将其放入 filebeat.yml 文件中:

output.elasticsearch:
  hosts: ["localhost:9200"]
Run Code Online (Sandbox Code Playgroud)

如何获取 JSON 字符串中的各个元素。假设我想比较所有 JSON 对象的所有“伪范围”字段。我会怎样:

  1. 从我的所有 JSON 消息中选择“pseudorange”字段来比较它们。
  2. 在 kibana 中直观地比较它们。目前我什至找不到该消息,更不用说可视化选项卡中的各个字段了......

我听说有人使用 Logstash 以某种方式解析字符串,但是有没有办法简单地使用 filebeat 来做到这一点?如果没有,那么我该如何使用 Logstash 来帮助过滤 json 中的各个字段,而不是让我的消息只是一个我无法与之交互的大 json 字符串?

我从 output.console 得到以下输出,请注意我将一些信息放入 <> 中以隐藏它:

  "@timestamp": "2021-03-23T09:37:21.941Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "doc",
    "version": "6.8.14",
    "truncated": false
  },
  "message": "{\n\t\"Signal_data\" : \n\t{\n\t\t\"antenna type:\" : \"GPS\",\n\t\t\"frequency type:\" : \"GPS\",\n\t\t\"position x:\" : 0.0,\n\t\t\"position y:\" : 0.0,\n\t\t\"position z:\" : 0.0,\n\t\t\"pseudorange:\" : 20280317.359730639,\n\t\t\"pseudorange_error:\" : 0.0,\n\t\t\"pseudorange_rate:\" : -152.02620448094211,\n\t\t\"svid\" : 18\n\t}\n}\u0000",
  "source": <ip …
Run Code Online (Sandbox Code Playgroud)

json elasticsearch logstash kibana filebeat

2
推荐指数
1
解决办法
9115
查看次数

标签 统计

elasticsearch ×1

error-handling ×1

filebeat ×1

json ×1

kibana ×1

logstash ×1

rust ×1