This document explains how to get started with syslogger APIs.
Ensure that your component has the required capabilities to log by including the following in your component manifest:
{ "include": [ "sdk/lib/diagnostics/syslog/client.shard.cmx" ], ... }
{ include: [ "sdk/lib/diagnostics/syslog/client.shard.cml" ], ... }
Note: The above is only available for in-tree development. This is tracked in fxbug.dev/64207. Out of tree developers should copy the snippets shown below instead.
{ "sandbox": { "services": [ "fuchsia.logger.LogSink" ] }, ... }
{ use: [ { protocol: "fuchsia.logger.LogSink" }, ], }
The global logger is lazily instantiated on the first use of the API (more specifically, on the first call to fx_log_get_logger
). The default configuration for the global logger is:
fuchsia.logger.LogSink
FX_LOG_INFO
//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, .console_fd = -1, .log_service_channel = ZX_HANDLE_INVALID, .tags = (const char * []) {"gtag", "gtag2"}, .num_tags = 2}; fx_log_reconfigure(&config); }
//sdk/lib/syslog/cpp //sdk/lib/syslog/cpp:backend_legacy
FX_LOGS(INFO) << "my message"; FX_LOGST(INFO, "tag") << "my message";
By default, the process name is used as the tag, but this can be changed by calling syslog::SetTags
.
#include <lib/syslog/cpp/log_settings.h> int main(int argc, char** argv) { syslog::SetTags({"tag1", "tag2"}); }
#include "<lib/syslog/cpp/log_settings.h> int main(int argc, char** argv) { syslog::LogSettings settings = {.min_log_level = syslog::LOG_ERROR}; syslog::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"}); }
No initialization is required for using the default configuration of syslog. If you would like your test suite to change the configuration based on command line arguments (e.g. --verbose), use:
//src/lib/fxl/test:gtest_main