Syslog

本文档介绍了如何开始使用 syslogger API。

组件清单依赖项

通过添加 在组件清单中添加以下代码:

{
  include: [
    "syslog/client.shard.cml"
  ],
  ...
}

如果 LogSink 连接失败,syslog 库将回退到 stderr

默认配置

全局日志记录器会在首次使用 API 时延迟实例化(更多 具体而言,在第一次调用 fx_log_get_logger 时)。默认 配置如下:

  • 使用进程名称作为标记
  • 将日志写入 fuchsia.logger.LogSink
  • 最低日志级别:FX_LOG_INFO

C 语言

BUILD.gn 依赖项

//zircon/public/lib/syslog

日志消息

FX_LOGF(INFO, "tag", "my msg: %d", 10);
FX_LOG(INFO, "tag", "my msg");
FX_LOGF(INFO, NULL, "my msg: %d", 10);

使用非默认配置

#include <lib/syslog/global.h>

int main(int argc, char** argv) {
    fx_logger_config_t config = {
      .min_severity = FX_LOG_INFO,
      .tags = (const char * []) {"gtag", "gtag2"},
      .num_tags = 2,
    };
    fx_log_reconfigure(&config);
}

参考文档

C API

在 C++ 中

BUILD.gn 依赖项

//sdk/lib/syslog/cpp

日志消息

#include <lib/syslog/cpp/macros.h>

FX_LOGS(INFO) << "my message";
FX_LOGST(INFO, "tag") << "my message";

设置标记

默认情况下,使用进程名称作为标记,但可以通过 正在调用 fuchsia_logging::SetTags

#include <lib/syslog/cpp/log_settings.h>

int main(int argc, char** argv) {
     fuchsia_logging::SetTags({"tag1", "tag2"});
}

设定设置

#include "<lib/syslog/cpp/log_settings.h>

int main(int argc, char** argv) {
     fuchsia_logging::LogSettings settings = {
         .min_log_level = fuchsia_logging::LOG_ERROR,
     };
     fuchsia_logging::SetLogSettings(settings, {"tag1", "tag2"});
}

通过命令行设置设置

#include "src/lib/fxl/command_line.h"
#include "src/lib/fxl/log_settings_command_line.h"

int main(int argc, char** argv) {
    auto command_line = fxl::CommandLineFromArgcArgv(argc, argv);
    fxl::SetLogSettingsFromCommandLine(command_line, {"my_program"});
}

使用从命令行初始化 syslog 的 GTest 主线程

使用 的默认配置无需初始化 Syslog如果您希望测试套件更改 (例如,--verbose),请使用:

//src/lib/fxl/test:gtest_main

参考文档

C++ API
命令行初始化 API