blob: 4bd6f58b72030bef9e9d91a430ce88b3123fa773 [file] [log] [blame] [view]
# Syslog
This document explains how to get started with syslogger APIs.
## In C
### BUILD.gn dependency
```gn
//zircon/public/lib/syslog
```
### Initialization
Logger can only be initialized once.
#### Basic initialization
```C
#include <lib/syslog/global.h>
int main(int argc, char** argv) {
fx_log_init();
}
```
#### Initialization with tags
```C
#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_init_with_config(&config);
}
```
### Log messages
```C
FX_LOGF(INFO, "tag", "my msg: %d", 10);
FX_LOG(INFO, "tag", "my msg");
FX_LOGF(INFO, NULL, "my msg: %d", 10);
```
### Reference
[C APIs](/zircon/system/ulib/syslog/include/lib/syslog/global.h)
## In C++
### BUILD.gn dependency
```gn
//src/lib/syslog/cpp
```
### sandboxing dependency
```
{
"sandbox": {
"services": [
"fuchsia.logger.LogSink"
]
}
}
```
### Initialization
Logger can only be initialized once.
#### Basic initialization
```C++
#include "src/lib/syslog/cpp/logger.h"
int main(int argc, char** argv) {
syslog::InitLogger();
}
```
#### Initialization with tags
```C++
#include "src/lib/syslog/cpp/logger.h"
int main(int argc, char** argv) {
syslog::InitLogger({"tag1", "tag2"});
}
```
#### Initialization using command line
```C++
#include "src/lib/fsl/syslogger/init.h"
#include "src/lib/fxl/command_line.h"
int main(int argc, char** argv) {
auto command_line = fxl::CommandLineFromArgcArgv(argc, argv);
fsl::InitLoggerFromCommandLine(command_line, {"my_program"});
}
```
### Log messages
```C++
FX_LOGS(INFO) << "my message";
FX_LOGST(INFO, "tag") << "my message";
```
### Reference
[C++ APIs](/src/lib/syslog/cpp/logger.h)
<br/>
[FSL initialization API](/src/lib/fsl/syslogger/init.h)