小编Dm3*_*3Ch的帖子

Loki 分别显示日志消息和额外字段

https://github.com/grafana/loki/issues/4249我发现了有趣的屏幕截图。 在此输入图像描述

在此屏幕截图中,我看到日志级别和消息以粗体显示,并带有白色文本,其他元数据(从日志消息收集)以灰色显示在单独的行上。

我搜索了文档,但没有找到如何实现这一目标。老实说,我正在 ELK 中寻找类似“短信”的东西,让开发人员仅在真正需要时才能看到元数据。您能否指出文档如何实现这一目标?

grafana grafana-loki

14
推荐指数
1
解决办法
1万
查看次数

yaml-cpp 读取项目中的序列

如何使用 yaml-cpp 读取此 YAML 文件:

sensors:
  - id: 5
    hardwareId: 28-000005a32133
    type: 1
  - id: 6
    hardwareId: 28-000005a32132
    type: 4
Run Code Online (Sandbox Code Playgroud)

我不明白我如何获得sensors物品,使用它。

据我了解sensors是一个YAML::Node. 我怎么才能得到它?

更新 1:

YAML::Node config = YAML::LoadFile(config_path);
const YAML::Node& node_test1 = confg["sensors"];

for (std::size_t i = 0; i < node_test1.size(); i++) {
    const YAML::Node& node_test2 = node_test1[i];
    std::cout << "Id: " << node_test2["id"].as<std::string>() << std::endl;
    std::cout << "hardwareId: " << node_test2["hardwareId"].as<std::string>() << std::endl << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

此代码有效,但它是使用有关旧 api 的教程编写的。我认为这段代码可以用迭代器重写,但我现在不知道如何重写。

c++ yaml yaml-cpp

3
推荐指数
1
解决办法
8205
查看次数

无法使基于 lua 的 EnvoyFilter 工作

我正在尝试让 EnvoyFilters 在我的安装中工作。\n出于测试目的,我正在尝试设置 lua 过滤器来记录哑消息并向响应添加标头。

\n

这是我的配置:

\n
apiVersion: networking.istio.io/v1alpha3\nkind: EnvoyFilter\nmetadata:\n  name: dumb-filter\n  namespace: istio-system\nspec:\n  # workloadSelector:\n  #   labels:\n  #     istio: ingressgateway\n  configPatches:\n  # - applyTo: VIRTUAL_HOST\n  - applyTo: HTTP_ROUTE\n    match:\n      context: GATEWAY\n      # context: ANY\n      routeConfiguration:\n        vhost:\n          # name: "<domain>:443"\n          route:\n            #TODO: Understand name compose logic\n            name: https.443.https.geth-dedicated.default\n    patch:\n      operation: MERGE\n      value:\n        name: envoy.filters.http.lua\n        typed_config:\n          "@type": type.googleapis.com/envoy.extensions.filters.http.lua.v3.Lua\n          inlineCode: |\n            function envoy_on_response(response_handle)\n              response_handle:headers():add("dm3ch-test", "dm3ch")\n              response_handle:logErr("Bye Bye.")\n            end\n
Run Code Online (Sandbox Code Playgroud)\n

目前我没有看到任何日志消息或测试标头响应。\n我已经尝试过:

\n
    \n
  • 在应用程序和 istio-system 命名空间(istio 网关 Pod 所在的位置)中创建 EnvoyFilter 对象
  • \n …

istio envoyproxy

3
推荐指数
1
解决办法
3458
查看次数

为 sqlite 回调转换函数类型

我正在使用sqlite编写程序。我有类dataSend_task,它会定期从 BD 中选择数据并将其发送到服务器。

dataSend_task我有方法callback,我想作为参数发送到sqlite3_exec.

我有错误:

error: cannot convert ‘std::function<int(void*, int, char**, char**)>’ to ‘int (*)(void*, int, char**, char**)’ for argument ‘3’ to ‘int sqlite3_exec(sqlite3*, const char*, int (*)(void*, int, char**, char**), void*, char**)’
         if (sqlite3_exec(this->db, this->SQL_SELECT_READINGS_QUERY, callback, 0, &err)) {
Run Code Online (Sandbox Code Playgroud)

源码部分:

int dataSend_task::callback(void *NotUsed, int argc, char **argv, char **columnName){...}

void dataSend_task::sendData()
{
    using namespace std::placeholders;
    std::function<int(void *, int, char **, char **)> callback = 
         std::bind(&dataSend_task::callback, this, _1, _2, _3, _4);

    if …
Run Code Online (Sandbox Code Playgroud)

sqlite type-conversion c++11

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