本文說明如何開始使用 syslogger API。
元件資訊清單依附元件
在元件資訊清單中加入以下內容,確保元件具有可記錄的必要功能:
{
include: [
"syslog/client.shard.cml"
],
...
}
如果 LogSink
連線失敗,系統記錄檔程式庫將恢復為 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++ 中
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